Як скинути порушений 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воля скидає термінал.


4
Лише короткий натяк: Якщо TTY абсолютно непридатний або консоль журналу, ви можете легко скинути його з будь-якого іншого TTY, echo ^v^o > /dev/ttyNде N - номер терміналу.
Торбен

Це не працює для мене на MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ед Рандалл

25

Зазвичай біг resetскидає термінал. .inputrcОднак деякі ключові прив’язки можуть бути втрачені.


Супер просте рішення, яке виправило мою збійну панель tmux oh-my-zsh.
Шадоніня

Це краще, ніж прийнята відповідь на мій погляд. Якщо ви не бачите, що ви вводите, простіше набрати resetта натиснути клавішу Enter, ніж намагатися використовувати комбінації клавіш, плюс це працює в 100% разів.
Серхіо

12

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

printf "\033c"

це єдиний, хто працював над OpenBSD 5.4
execNext

1
Це також працювало з оболонки (bash) як echo -e '\ 033c'
Ед Рандалл,

3
@EdRandall Так. Зауважте, що "echo -e" підтримується не всіми оболонками, але printfмає перевагу, щоб він був портативним, тому працює незалежно від оболонки, включаючи bash.
jlliagre

Я уявляю, що це не має нічого спільного з діакритикою чайки в IPA? U + 033C ‹◌̼› \ N {КОМБІНУВАННЯ
СЕГУЛЬНО НІЖ

@TRiG Дійсно. Немає нічого спільного з відомою цитатою Еріка Кантона. ;-)
jlliagre

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

Іншим варіантом буде встановити здорове програмне забезпечення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.