我最近clear
在我的终端上做了一个操作,发现上面的一行打印了以下字符:
[unknown character]3;J
我clear | hexdump
对此进行了调查,发现打印了以下字符:
ESC [ 3 ; J ESC [ H ESC [ 2 J
我尝试在终端中输入这些键,发现虽然屏幕没有清除,但只显示了第一个 J。这是终端中的错误吗?
答案1
它们就是所谓的“ESCape 序列”,是用于告诉玻璃键盘您的终端会话正在模拟(根据您的$TERM
环境变量)“清除屏幕”的字符序列。
ESC [ 3 ; J ESC [ H ESC [ 2 J
取决于您的TERM
环境变量的值。(echo $TERM
)。如果$TERM
与您使用的终端类型不匹配,clear
则会选择错误的字符串。
你的是什么$TERM
?什么样的终端?
例如,我在 Gnome 终端中输入(Ctrl Alt T在我的 Ubuntu 14.04 图形登录上)并且
$ echo $TERM
xterm-color
$ clear | od -bc
0000000 033 133 110 033 133 062 112
033 [ H 033 [ 2 J
0000007
$ clear
默默地清除我的屏幕。
当我登录到Ctrl Alt F1会话时,我的$TERM
启动为,并由我的"linux"
设置为xterm-color
~/.bashrc
从阅读开始man tput;man terminfo
,然后阅读其章节man
中提到的页面。SEE ALSO