Так, когда я cat /dev/input/mouse0
в TTY переместите мышь немного, и затем ctrl-z
остановиться cat
, все испорчены мои терминальные символы. Почти каждый символ выгружается для другого символа в наборе символов ASCII. Эта та же ситуация происходит, когда я выполняю это в Python 3.2:
print('\033[1;12mTest.\033[1;m')
Тот же признак не появляется на оболочке в GUI, только на виртуальных терминалах. Проблема не уходит, если я выхожу из системы. Я подозреваю, что определенный управляющий код (который может содержаться в рамках кода Python) повторно отображает коды байта ASCII на символьные представления, но это - просто предположение. Что происходит и как я отменяю его?
Я наконец нашел команду, которую искал, в Командная строка Фу . Команда reset
. Я попробовал это, и это работало отлично, без выхода из системы или перезапуска системы.
При выводе двоичных файлов на терминал, как и ваш cat /dev/input/mouse0
, вы можете отправить ему ЛЮБОЙ символ. Это может запутать виртуальный терминал.
Строка символов ESC [ представляет «Последовательность управления VT100» (совместимость со старым стеклянным клавишным штампом). Другие персонажи, такие как ^ Q , ^ S , ^ N , ^ O делают магические вещи, основываясь на совместимости с телетайпами модели 35 с бумагой считыватель магнитных лент / перфоратор.
Когда я пытаюсь сбить с толку терминал, я делаю:
Заморожен ли вывод? Введите ^ Q (ctrl-Q) (символ XON, чтобы запустить устройство чтения бумажных лент).
Введите команду stty sane
. Если при вводе нет отображаемых символов, stty echo
восстановит эхо.
Прочтите man stty
, и вы увидите, как можно сохранить набор настроек терминала и восстановить их позже!
Кстати, остановка программы использует crtl-C для остановить программу. Ctrl-Z просто прерывает программу, готовясь поместить ее в фоновый режим. Некоторые программы перехватывают ^ C и по мере необходимости выполняют необходимую очистку, сохранение файлов и т. Д. Если вы просто ^ Z и запустите что-то еще, эта очистка не будет завершена.