为什么清除时会将这些字符写入终端?

为什么清除时会将这些字符写入终端?

我最近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

相关内容