Почему эти символы записаны в терминал во время ясного?

Я недавно сделал a clear на моем терминале и найденный, что следующие символы были распечатаны на строка выше:

[unknown character]3;J

Я сделал a clear | hexdump для изучения это и нашло, что следующие символы были распечатаны:

ESC [ 3 ; J ESC [ H ESC [ 2 J

Я пытался ввести эти ключи в свой терминал, и я заметил, что, в то время как экран не очищался, только первый J обнаружился. Действительно ли это - ошибка в терминале?

1
задан 21 June 2015 в 00:39

1 ответ

Они - то, что известно как "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 разделы.

1
ответ дан 7 December 2019 в 16:15

Другие вопросы по тегам:

Похожие вопросы: