4

我正在查看一些输出以下内容的特定于 linux 的代码:

\r\x1b[J>

到std io。

我知道这<ESC>[J代表从当前行向下删除屏幕内容,但是 \r 在这里做什么?

我还看到以下内容:

>user_input\n\r>

其中 user_input 是用户输入的文本。但是这里的 \r 的目的是什么?

4

5 回答 5

15

字符'\r'回车。它将光标返回到行首。

它通常在 Internet 协议中与换行符 ( '\n') 结合使用以标记行尾(大多数标准将其指定为"\r\n",但有些允许错误的方式)。在 Windows 上,回车换行对也用作行尾。在旧的 Macintosh 操作系统(OSX 之前)上,使用单个回车而不是换行符作为换行符,而 UNIX 和类 UNIX 系统(如 Linux 和 OSX)使用单个换行符。

于 2013-02-20T08:55:59.810 回答
1

控制字符\r将插入符号(又名文本光标)移动到当前行中的最左侧位置。

于 2013-02-20T08:55:37.730 回答
1

来自维基百科

基于 ASCII 或兼容字符集的系统单独使用 LF(换行,'\n',0x0A,十进制的 10)或 CR(回车,'\r',0x0D,十进制的 13),或 CR 后跟LF (CR+LF, '\r\n', 0x0D0A)。这些字符是基于打印机命令的:换行表示一行纸应该从打印机中送出,因此指示打印机将纸张前进一行,回车表示打印机回车应该返回到打印机的开头。当前行。一些罕见的系统,例如版本 4 之前的 QNX,使用 ASCII RS(记录分隔符,0x1E,十进制的 30)字符作为换行符。

于 2013-02-20T08:56:26.503 回答
0

\r是回车。同样\n是换行。

于 2013-02-20T08:56:26.767 回答
0

FWIW - 这是回车控制的一部分 - 从大型机控制字到 Windows/UNIX/FORTRAN 回车控制。托架控制可以像 FORTRAN 那样在语言级别实现,也可以像 UNIX 和 Windows 那样在系统范围内实现。

\n源于早期 PDP 用户“接口”——tty 终端的限制。想看的话就去博物馆。

很简单的一点:\n\r 的区别上面已经解释过了。但是所有这些解释实际上都是在说回车控制是依赖于实现的。

[J 是 ANSI 转义序列的一部分,以及它们在“符合标准的 tty 终端”上所做的事情。DOS 曾经让 ANSI.SYS 提供:颜色、下划线、使用这些序列的粗体。

http://ascii-table.com/ansi-escape-sequences.php

是一个很好的问题参考:what does some odd looking string in the output do?

于 2013-02-20T13:10:10.317 回答