Shell 什么是写作\r\027[1A\027[K”怎么办?

Shell 什么是写作\r\027[1A\027[K”怎么办?,shell,ocaml,ascii,Shell,Ocaml,Ascii,我在终端中遇到了一些聊天应用程序代码(OCaml),并在终端打印新用户消息之前,将该字符串(ASCII?)“\r\027[1A\027[K”打印到终端中 我试过一个接一个地用谷歌搜索文字,所以我知道“\r”代表盒带返回,而“[code>\027代表ASCII中的ESC,但“[1A”和“[K”有什么作用?这是什么字符编码 最后,这个命令的总体效果是什么?[引入了一个控制序列。a是“光标向上”的控制序列,[1A将光标向上移动一行。K删除一行。因此\x1b[1A\x1b[K向上移动一行并删除它(用空格

我在终端中遇到了一些聊天应用程序代码(OCaml),并在终端打印新用户消息之前,将该字符串(ASCII?)“\r\027[1A\027[K”打印到终端中

我试过一个接一个地用谷歌搜索文字,所以我知道“\r”代表盒带返回,而“[code>\027代表ASCII中的ESC,但“[1A”和“[K”有什么作用?这是什么字符编码


最后,这个命令的总体效果是什么?

[
引入了一个控制序列。
a
是“光标向上”的控制序列,
[1A
将光标向上移动一行。
K
删除一行。因此
\x1b[1A\x1b[K
向上移动一行并删除它(用空格替换)

当然,只有接收该字符串的终端能够识别控制序列时,这才有效。并非所有终端都能识别


我不确定027试图做什么。这似乎是一个错误,应该是033。

[
引入了一个控制序列。
a
是“光标向上”的控制序列,
[1A
将光标向上移动一行。
K
删除一行。因此
\x1b[1A\x1b[K
向上移动一行并删除它(将其替换为空格)

当然,只有接收该字符串的终端能够识别控制序列时,这才有效。并非所有终端都能识别


我不确定027试图做什么。这似乎是一个错误,应该是033。

令人难以置信的是,源代码中没有任何关于这可能会做什么的提示。创建一个名为
向上移动和删除行
或其他什么的函数非常容易。没有理由编写如此神秘的源代码。这是我的想法-令人难以置信的是,源代码中没有任何关于这可能会发生什么的提示。创建一个名为
move\u up\u和\u delete\u line
的函数非常容易。没有理由编写如此神秘的源代码。谢谢!但是为什么需要转义?我如何检查任何特定的终端是否能够识别控制序列nces?使用
tput
!要知道您的终端是否识别序列,您可以检查terminfo/termcap数据,或者检查eyball it.OCaml以0开头的数字转义是十进制的。因此“\027”实际上是转义字符。谢谢!但是为什么需要转义?我如何检查任何特定的终端是否识别控制序列?使用
tput
!要知道终端是否识别序列,您可以检查terminfo/termcap数据,或者eyball it.OCaml以0开头的数字转义是十进制的。因此“\027”实际上是逃避角色。