Nol*_*ias 2 terminal escape-characters
这个命令是什么?我知道,CSI n ; m H
用于将光标移动到n
行和m
列,但是标题中的命令是什么?^[[H^[[2J
?
这是^[
清除屏幕并将光标至少在类似 xterm 的终端中置于顶部的序列的视觉表示(其中表示 ESC 字符):
$ TERM=xterm tput clear | cat -v\n^[[H^[[2J\n
Run Code Online (Sandbox Code Playgroud)\n\n要了解这些转义序列,请查看.txt附带的ctlseqs.txtxterm
文档。在那里,您会发现:
\n\n\nESC [
\n
\n 控制序列引入符(CSI 为 0x9b)。
和:
\n\n\n\n\nCSI Ps;Ps H
\n
\n 光标位置 [行;列](默认 = [1,1])(CUP)。
和:
\n\n\n\n\nCSI Ps J 显示器擦除 (ED)。
\n
\n Ps = 0 -> 删除下方(默认)。
\n Ps = 1 -> 删除上面的内容。
\n Ps = 2 -> 全部删除。
\n Ps = 3 -> 删除已保存的行 (xterm)。
(请注意,这^[[2J
不会清除已保存的行或备用屏幕)。
tput clear
(或clear
) 在xterm
类似终端上的作用与 相同printf \'\\e[H\\e[2J\'
。为此,它查询数据库以了解名称存储在环境变量中的终端的功能terminfo
的字符序列是什么。如果您将终端条目转储到数据库中clear
$TERM
xterm
terminfo
infocmp xterm
,您将在其中看到:
$\xc2\xa0infocmp -1 xterm | grep clear\n clear=\\E[H\\E[2J,\n
Run Code Online (Sandbox Code Playgroud)\n\n这是了解给定转义序列的另一种方法:
\n\n$\xc2\xa0infocmp -L -1 | grep J\n clear_screen=\\E[H\\E[2J,\n clr_eos=\\E[J,\n
Run Code Online (Sandbox Code Playgroud)\n\n(此处使用L
功能的 ong 名称)。然后,您可以man 5 terminfo
对这些功能进行描述。