Я недавно сделал a clear
на моем терминале и найденный, что следующие символы были распечатаны на строка выше:
[unknown character]3;J
Я сделал a clear | hexdump
для изучения это и нашло, что следующие символы были распечатаны:
ESC [ 3 ; J ESC [ H ESC [ 2 J
Я пытался ввести эти ключи в свой терминал, и я заметил, что, в то время как экран не очищался, только первый J обнаружился. Действительно ли это - ошибка в терминале?
Они - то, что известно как "Escape-последовательность" и является последовательностью символов, используемой, чтобы сказать стеклянному клавишному перфоратору, что Ваш терминальный сеанс эмулирует (согласно Вашему $TERM
переменная среды) для "очистки экрана".
ESC [ 3 ; J ESC [ H ESC [ 2 J
выбран в зависимости от значения Вашего TERM
переменная среды. (echo $TERM
). Если $TERM
не соответствует виду терминала, который Вы используете, clear
выберет неправильную строку.
Что такое Ваш $TERM
? Какой терминал?
Например, я ввожу к Терминалу Gnome (Высокий звук Ctrl 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 сессия F1, мой $TERM
запускается как "linux"
, и установлен на xterm-color
моим ~/.bashrc
Запустите с чтения man tput;man terminfo
, и читайте man
страницы, упомянутые в их SEE ALSO
разделы.