我正在查看一些输出以下内容的特定于 linux 的代码:
\r\x1b[J>
到std io。
我知道这<ESC>[J
代表从当前行向下删除屏幕内容,但是 \r 在这里做什么?
我还看到以下内容:
>user_input\n\r>
其中 user_input 是用户输入的文本。但是这里的 \r 的目的是什么?
字符'\r'
是回车。它将光标返回到行首。
它通常在 Internet 协议中与换行符 ( '\n'
) 结合使用以标记行尾(大多数标准将其指定为"\r\n"
,但有些允许错误的方式)。在 Windows 上,回车换行对也用作行尾。在旧的 Macintosh 操作系统(OSX 之前)上,使用单个回车而不是换行符作为换行符,而 UNIX 和类 UNIX 系统(如 Linux 和 OSX)使用单个换行符。
控制字符\r
将插入符号(又名文本光标)移动到当前行中的最左侧位置。
来自维基百科
基于 ASCII 或兼容字符集的系统单独使用 LF(换行,'\n',0x0A,十进制的 10)或 CR(回车,'\r',0x0D,十进制的 13),或 CR 后跟LF (CR+LF, '\r\n', 0x0D0A)。这些字符是基于打印机命令的:换行表示一行纸应该从打印机中送出,因此指示打印机将纸张前进一行,回车表示打印机回车应该返回到打印机的开头。当前行。一些罕见的系统,例如版本 4 之前的 QNX,使用 ASCII RS(记录分隔符,0x1E,十进制的 30)字符作为换行符。
\r
是回车。同样\n
是换行。
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?