Почему нажатия клавиш превращаются в сумасшедшие символы после того, как я сбросил кучу двоичных данных в свой терминал? - PullRequest
20 голосов
/ 23 сентября 2008

Если я сделаю что-то вроде:

$ cat /bin/ls

в мой терминал, я понимаю, почему я вижу кучу двоичных данных, представляющих исполняемый файл ls. Но потом, когда я получаю подсказку обратно, мои собственные нажатия клавиш выглядят сумасшедшими. Я набираю «а» и получаю странную диагональную линию. Я набираю «b» и получаю символ степени.

Почему это происходит?

Ответы [ 6 ]

44 голосов
/ 23 сентября 2008

Потому что где-то в ваших двоичных данных были некоторые управляющие последовательности, которые ваш терминал интерпретировал как запросы, например, на изменение набора символов, используемого для рисования. Вы можете восстановить все до нормального состояния так:

reset
13 голосов
/ 16 декабря 2008

Просто сделайте копию-вставку:

echo -e '\017'

на ваш bash и персонажи вернутся в нормальное состояние. Если вы не запускаете bash, попробуйте следующие нажатия клавиш:

<Ctrl-V><Ctrl-O><Enter>

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

или символ 14 - при отправке на терминал - приказывает переключиться в специальный графический режим, где буквы и цифры заменяются символами. или символ 15 восстанавливает нормальное состояние.

4 голосов
/ 23 сентября 2008

Терминал попытается интерпретировать выдаваемые ему двоичные данные как управляющие коды и искажать себя в процессе, поэтому вам необходимо очистить ваш tty.

Пробег:

stty sane

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

Более подробную информацию о команде stty вы можете найти здесь .

3 голосов
/ 23 сентября 2008

Вы получаете некоторые управляющие символы, переданные в оболочку, которые говорят оболочке изменить свое поведение и распечатать вещи по-другому.

2 голосов
/ 23 сентября 2008

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

Когда вы отправляете много двоичных символов на такой терминал, многие настройки меняются. Некоторые терминалы имеют опции для «сброса» настроек до значений по умолчанию, но в целом они просто не были созданы для двоичных данных.

VT100 и его преемники позволяют Linux печатать цветной текст (например, цветные списки ls) в простой терминальной программе.

-Adam

0 голосов
/ 23 сентября 2008

Если вам действительно нужно выгрузить двоичные данные на свой терминал, вам гораздо повезет, если вы передадите их на пейджер типа less, который отобразит их в чуть более удобочитаемом формате. (Вы также можете быть заинтересованы в strings и od, оба могут быть полезны, если вы возитесь с двоичными файлами.)

...