Как сбросить битый TTY?

15

Мой Slackware TTY можно легко сломать, запустив:

cat some_binary_file

После команды весь TTY больше не будет отображать читаемые символы, но все равно будет реагировать на события клавиатуры.

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

Есть ли решение без перезагрузки всей машины?

Говард
источник

Ответы:

13

Запустите echo ^v^o, то есть, echoи тогда, Ctrl-vи тогда Ctrl-o, Enter. Вы не увидите Ctrl-v. Это будет отображаться как echo ^O. Ctrl-vпереводит его в подробный режим, проходя через управляющие символы, и Ctrl-oперезагрузит терминал.

Florian
источник
4
Краткий совет: если TTY полностью непригоден для использования или в качестве консоли регистрации, вы можете легко сбросить его из любого другого TTY, echo ^v^o > /dev/ttyNгде N - номер терминала.
Торбен
Это не работает для меня на MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Эд Рэндалл,
25

Обычно при запуске resetсбрасывается терминал. Некоторые привязки клавиш .inputrcмогут быть потеряны.

choroba
источник
Супер простое решение, которое исправило мою разбитую панель tmux oh-my-zsh.
Шадониня
Это лучше, чем принятый ответ на мой взгляд. Когда вы не видите, что печатаете, проще набрать текст resetи нажать клавишу ввода, чем пытаться использовать комбинации клавиш, плюс, это работает 100% времени.
Серхио
12

Вы можете попробовать команду сброса ANSI:

printf "\033c"
jlliagre
источник
это единственный, который работал на OpenBSD 5.4
execNext
1
Это также работало из оболочки (bash) как echo -e '\ 033c'
Эд Рэндалл,
3
@ EdRandall Да. Обратите внимание, что «echo -e» поддерживается не всеми оболочками, в то время printfкак преимущество заключается в переносимости, поэтому работает независимо от оболочки, включая bash.
jlliagre
Я полагаю, что это не имеет ничего общего с диакритическим знаком Чайка в IPA? U + 033C ‹◌̼› \ N {КОМБИНИРОВАНИЕ ЧАЙКИ НИЖЕ}
TRIG
@TRiG Действительно. Ничего общего с цитатой знаменитого Эрика Кантона. ;-)
17
5

Мой терминал не отображал символы, которые я набрал. Ни один из других приемов не сработал. Этот работает:

stty sane

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

echo ^v^o
reset
printf "\033c"

Источник: /unix//a/79686/53236

Джеспер Рённ-Йенсен
источник
0

На самом деле есть несколько потенциальных проблем, и это может иметь отношение к вашей среде. Прежде всего, как ответил @Jesper, вы хотите сделать stty sane. Тем не менее, вы даже не сможете правильно настроить среду с этим.

Это связано с разницей между /bin/bashи /bin/sh. После открытия вашего tty, запустите /bin/bashи попробуйте stty sane. Это должно все исправить. Наконец, я рекомендую добавить такую ​​вещь в .bashrc

Другим вариантом будет установка нормального программного обеспечения.

user2262111
источник