Почему мои нажатия клавиш превращаются в сумасшедших персонажей после того, как я сброшу кучу двоичных данных в терминал?
Если я сделаю что-то вроде:
$ cat /bin/ls
в мой терминал, я понимаю, почему я вижу кучу двоичных данных, представляющих исполняемый файл ls. Но потом, когда я вернусь назад, мои собственные нажатия клавиш выглядят сумасшедшими. Я набираю "a", и я получаю странную диагональную линию. Я набираю "b" и получаю символ степени.
Почему это происходит?
Ответы
Ответ 1
Поскольку где-то в ваших двоичных данных были некоторые управляющие последовательности, которые ваш терминал интерпретировал как запросы, например, изменить набор символов, используемый для рисования. Вы можете восстановить все в обычном порядке:
reset
Ответ 2
Просто сделайте копию:
echo -e '\017'
к вашему bash, и символы вернутся в нормальное состояние. Если вы не запустите bash, попробуйте следующие нажатия клавиш:
<Ctrl-V><Ctrl-O><Enter>
и, надеюсь, ваш статус терминала вернется в нормальное состояние, когда он пожалуется, что он не может найти команду Ctrl + V > < Ctrl-O > или .
< Ctrl-N > или символ 14 - после отправки в ваши терминальные заказы перейти к специальному графическому режиму, где буквы и цифры заменяются символами. < Ctrl-O > или символ 15, восстанавливает все в порядке.
Ответ 3
Вы получаете контрольные символы, переданные в оболочку, которые сообщают оболочке об изменении своего поведения и печати по-разному.
Ответ 4
Терминал попытается интерпретировать двоичные данные, брошенные на него в виде управляющих кодов, и взломать себя в процессе, так что вам нужно санировать вашу tty.
Run:
stty sane
И все должно вернуться к нормальной жизни. Даже если команда выглядит искаженной при ее вводе, фактические символы сохраняются правильно, и когда вы нажимаете return, вызывается команда.
Вы можете найти дополнительную информацию о команде stty здесь.
Ответ 5
VT100 - это почти стандартный набор команд, используемый для окон терминала, но есть много расширений. Используется некоторый набор управляющих символов, сопоставление клавиш и т.д.
Когда вы отправляете много двоичных символов на такой терминал, изменяется множество настроек. У некоторых терминалов есть опции, чтобы "очистить" настройки до значения по умолчанию, но в целом они просто не были созданы для двоичных данных.
VT100 и его преемники - это то, что позволяет Linux печатать в цветном тексте (например, цветные листы) в простой терминальной программе.
-Adam
Ответ 6
Если вам действительно нужно выгрузить двоичные данные на ваш терминал, вам будет гораздо лучше, если вы подключите его к пейджеру, например less
, который отобразит его в немного более читаемом формате. (Вас также может заинтересовать strings
и od
, оба могут быть полезны, если вы играете с двоичными файлами.)