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?

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.


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.


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"

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.