意义

2013-02-20 63 views
1

我看这是输出的喜欢一些Linux特定代码:意义

\r\x1b[J> 

到STD IO。

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

我也看到了以下内容:

>user_input\n\r> 

其中USER_INPUT是由用户输入的文本。但是这里的目的是什么?

+0

它发音为*回车*所以我认为这将是您轻松googleable。 – 2013-02-20 08:55:24

+0

@ om-nom-nom我在上面的上下文中询问它的目的。 – Baz 2013-02-20 09:02:42

回答

5

字符'\r'回车。它将光标返回到行的开头。

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

+2

历史上,新行意味着:在屏幕或打印机上,将光标向下移动一行,但将其保留在同一列中。并且回车将它移动到行的开头,而不改变行。要开始下一行,您需要两种方式(按任意顺序)。 Unix和Mac的作者显然认为他们只需要一个字符就可以开始下一行,并选择一个字符。 – 2013-02-20 09:19:20

1

控制字符\r将光标(也称为文本光标)移动到当前行内最左侧的位置。

0

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

+0

在文本文件中,'\ n''不仅仅是换行符。文本文件是一串行,'\ n'是行结束符。 – 2013-02-20 09:21:18

1

Wikipedia

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

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?