Jak zresetować uszkodzony TTY?

15

Mój Slackware TTY można łatwo zepsuć, uruchamiając:

cat some_binary_file

Po poleceniu cały TTY nie będzie już wyświetlał czytelnych znaków, ale nadal będzie reagował na zdarzenia z klawiatury.

Nawet jeśli wyloguję się i zaloguję ponownie, TTY jest nadal zepsuty i nie wyświetla już czytelnych znaków. Muszę ponownie uruchomić komputer, aby przywrócić normalne działanie TTY.

Czy istnieje rozwiązanie bez ponownego uruchamiania całej maszyny?

Howard
źródło

Odpowiedzi:

13

Uruchom echo ^v^o, to znaczy od echoczasu Ctrl-vdo czasu Ctrl-o, Enter. Nie zobaczysz Ctrl-v. Wyświetli się jako echo ^O. Ctrl-vustawia go w tryb gadatliwy, przechodząc przez znaki sterujące, i Ctrl-oresetuje terminal.

Florian
źródło
4
Krótka wskazówka: jeśli TTY jest całkowicie bezużyteczny lub konsola rejestrująca, możesz go łatwo zresetować z dowolnego innego TTY, echo ^v^o > /dev/ttyNgdzie N jest numerem terminala.
Torben
To nie działa dla mnie na MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ed Randall
25

Zwykle uruchomienie resetresetuje terminal. Niektóre powiązania klawiszy .inputrcmogą zostać utracone.

choroba
źródło
Super proste rozwiązanie, które naprawiło mój rozbity panel tmux oh-my-zsh.
Shadoninja
Moim zdaniem jest to lepsze niż zaakceptowana odpowiedź. Jeśli nie widzisz, co piszesz, łatwiej jest wpisać reseti nacisnąć Enter niż próbować używać kombinacji klawiszy, a ponadto działa to w 100% razy.
Sergio
12

Możesz spróbować wykonać polecenie ANSI reset:

printf "\033c"
jlliagre
źródło
jest to jedyny, który działał na OpenBSD 5.4
execNext
1
Działa to również z powłoki (bash) jako echo -e '\ 033c'
Ed Randall
3
@EdRandall Tak. Zauważ, że „echo -e” nie jest obsługiwane przez wszystkie powłoki, ale printfma tę zaletę, że jest przenośne, więc działa niezależnie od powłoki, w tym bash.
jlliagre
Wyobrażam sobie, że nie ma to nic wspólnego z mewa diakrytycznym w IPA? U + 033C ‹◌̼› \ N {ŁĄCZENIE SEAGULL PONIŻEJ}
TRiG
@TRiG Rzeczywiście. Nic wspólnego z cytatem słynnego Erica Cantony. ;-)
jlliagre
5

Mój terminal nie wyświetlał żadnych wpisanych znaków. Żadna inna sztuczka nie zadziałała. Ten działa:

stty sane

Pracował dla mnie. Czasami mam terminal w stanie nieodpowiadającym, ale żadna z pozostałych sugestii nie mogła mi dać z powrotem danych wyjściowych. Inne sugestie, które wypróbowałem, ale nie zadziałały:

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

Źródło: /unix//a/79686/53236

Jesper Rønn-Jensen
źródło
0

Istnieje kilka potencjalnych problemów, które mogą mieć związek ze środowiskiem. Po pierwsze, jak odpowiedział @Jesper, chcesz to zrobić stty sane. Jednak może nie być nawet w stanie poprawnie skonfigurować środowiska.

Wynika to z różnicy między /bin/bashi /bin/sh. Po otwarciu swojego tty, uruchom, /bin/basha następnie spróbuj stty sane. To powinno wszystko naprawić. Na koniec polecam dodanie czegoś takiego do .bashrc

Inną opcją byłoby zainstalowanie zdrowego oprogramowania.

użytkownik2262111
źródło