Неадекватное поведение терминала

Когда я писал этот раздел, мне сразу вспомнился киножурнал Ералаш, в котором мальчик принес свою собаку на прием к ветеринару.

— Доктор. Моя собака неадекватно реагирует на мои команды…

При использовании cat и некоторых других программ терминал, на котором вы работаете, может начать вести себя неадекватно. У него вместо букв будут отображаться символы псевдографики, перестанут работать некоторые клавиши.

Обычно такие изменения возникают при попытке посмотреть содержимое бинарного файла. Все дело в том, что у терминалов есть встроенные команды. Они начинаются с символа escape (его обычно обозначают как:\e или \033), после которого идет сама команда.

Команды передаются в том же потоке данных, что и символы, которые выводит терминал. При просмотре файлов их содержимое просто копируется на терминал. Если это текстовый файл проблем не будет, так как данные представляют из себя набор печатаемых символов, которые терминал выводит на свой экран. Если это бинарный файл, то его содержимое не ограничено только печатаемыми символами, в нем возможны любые данные от 0x00 до 0xff (таким образом обозначают шестнадцатеричные цифры), в том числе и символ escape. То есть существует вероятность, что будет выполнена команда смены шрифта или переназначения функции клавиши.

Если Ваш терминал начинает работать неправильно, в командной строке необходимо набрать команду reset и нажать Enter. Поскольку терминал не корректно отображает символы, reset придется набирать на ощупь. Если была переопределена клавиша Enter, воспользуйтесь комбинацией клавиш Ctrl+J — это тоже самое, что и Enter.

Команда reset заставляет систему послать соответствующую команду терминалу. После этого он восстанавливает свои настройки про умолчанию, в том числе шрифт и функции клавиш.