Come resettare un TTY rotto?


15

Il mio Slackware TTY può essere facilmente rotto eseguendo:

cat some_binary_file

Dopo il comando, l'intero TTY non visualizzerà più caratteri leggibili ma risponderà comunque agli eventi della tastiera.

Anche se eseguo il logout e il login di nuovo, il TTY è ancora rotto e non mostra più caratteri leggibili. Devo riavviare la macchina per ripristinare la normale operazione TTY.

Esiste una soluzione senza riavviare l'intera macchina?

Risposte:


13

Esegui echo ^v^o, ovvero echoe quindi Ctrl-ve poi Ctrl-o, Invio. Non vedrai il Ctrl-v. Verrà visualizzato come echo ^O. Ctrl-vlo imposta in modalità dettagliata, passando attraverso i caratteri di controllo e Ctrl-oreimposterà il terminale.


4
Solo un breve suggerimento: se il TTY è completamente inutilizzabile o una console di registrazione è possibile ripristinarlo facilmente da qualsiasi altro TTY con echo ^v^o > /dev/ttyNdove N è il numero del terminale.
Torben,

Questo non funziona per me su MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ed Randall

25

Di solito, l'esecuzione resetripristina il terminale. .inputrcTuttavia, alcuni collegamenti chiave potrebbero andare persi.


Soluzione super semplice che ha risolto il mio riquadro tmux oh-my-zsh in crash.
Shadoninja,

Secondo me, è meglio della risposta accettata. Quando non riesci a vedere quello che stai digitando, è più facile digitare resete premere Invio piuttosto che provare a usare combinazioni di tasti, inoltre, funziona il 100% delle volte.
Sergio,

12

Puoi provare il comando ANSI reset:

printf "\033c"

questo è l'unico che ha funzionato su OpenBSD 5.4
execNext

1
Questo ha funzionato anche dalla shell (bash) come echo -e '\ 033c'
Ed Randall

3
@EdRandall Sì. Nota che "echo -e" non è supportato da tutte le shell mentre printfha il vantaggio di essere portatile, quindi funziona qualunque sia la shell, incluso bash.
jlliagre,

Immagino che questo non abbia nulla a che fare con il gabbiano diacritico nell'IPA? U + 033C ‹◌̼› \ N {
COMBINANDO SEAGULL

@TRiG In effetti. Niente a che vedere con la famosa citazione di Eric Cantona. ;-)
jlliagre,

5

Il mio terminale non visualizzava i caratteri digitati. Nessuno degli altri trucchi ha funzionato. Questo funziona:

stty sane

Ha funzionato per me. A volte ho un terminale in uno stato che non risponde, ma nessuno degli altri suggerimenti potrebbe restituirmi l'output. Gli altri suggerimenti che ho provato, ma non ha funzionato:

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

Fonte: /unix//a/79686/53236


0

In realtà ci sono alcuni potenziali problemi e potrebbe avere a che fare con il tuo ambiente. Prima di tutto, come ha risposto @Jesper, vuoi farlo stty sane. Tuttavia, potresti non essere in grado di configurare l'ambiente correttamente con quello.

Ciò è dovuto alla differenza tra /bin/bashe /bin/sh. All'apertura di tty, corri /bin/bashe poi prova stty sane. Questo dovrebbe risolvere tutto. Infine, consiglio di aggiungere una cosa del genere a .bashrc

Un'altra opzione sarebbe quella di installare un software sano tty.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.