Wie setze ich ein defektes TTY zurück?

15

Mein Slackware TTY kann leicht beschädigt werden, indem man Folgendes ausführt:

cat some_binary_file

Nach dem Befehl zeigt das gesamte TTY keine lesbaren Zeichen mehr an, reagiert jedoch weiterhin auf Tastaturereignisse.

Auch wenn ich mich abmelde und wieder anmelde, ist das TTY immer noch defekt und zeigt keine lesbaren Zeichen mehr an. Ich muss die Maschine neu starten, um den normalen TTY-Betrieb wiederherzustellen.

Gibt es eine Lösung ohne Neustart der gesamten Maschine?

Howard
quelle

Antworten:

13

Run echo ^v^o, das heißt echound dann Ctrl-vund dann Ctrl-oEnter. Sie werden das nicht sehen Ctrl-v. Es wird angezeigt als echo ^O. Ctrl-vVersetzt es in den ausführlichen Modus, durchläuft Steuerzeichen und Ctrl-osetzt das Terminal zurück.

Florian
quelle
4
Nur ein kurzer Hinweis: Wenn das TTY völlig unbrauchbar ist oder eine Protokollierungskonsole, können Sie es einfach von jedem anderen TTY aus zurücksetzen, echo ^v^o > /dev/ttyNwobei N die Nummer des Terminals ist.
Torben
Dies funktioniert unter MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2) nicht
Ed Randall
25

Normalerweise wird beim Ausführen resetdas Terminal zurückgesetzt. Einige Tastenkombinationen von .inputrckönnten jedoch verloren gehen.

Choroba
quelle
Super einfache Lösung, die mein abgestürztes tmux oh-my-zsh-Fenster repariert.
Shadoninja
Dies ist meiner Meinung nach besser als die akzeptierte Antwort. Wenn Sie nicht sehen können, was Sie eingeben, ist es einfacher zu tippen resetund die Eingabetaste zu drücken, als Tastenkombinationen zu verwenden. Außerdem funktioniert dies in 100% der Fälle.
Sergio
12

Sie können den Befehl ANSI reset ausführen:

printf "\033c"
jlliagre
quelle
Dies ist die einzige, die unter OpenBSD 5.4
execNext
1
Dies funktionierte auch von der Shell (Bash) als Echo -e '\ 033c'
Ed Randall
3
@EdRandall Ja. Beachten Sie, dass "echo -e" nicht von allen Shells unterstützt wird, obwohl printfes den Vorteil hat, dass es portierbar ist, sodass es unabhängig von der Shell, einschließlich Bash, funktioniert.
Juli
Ich stelle mir vor, dass dies nichts mit der diakritischen Seemöwe in IPA zu tun hat? U + 033C ‹◌̼› \ N {KOMBINIERENDE SEEMÖWE UNTEN}
TRiG
@TRiG In der Tat. Auch mit dem berühmten Zitat von Eric Cantona nichts zu tun . ;-)
jlliagre
5

In meinem Terminal wurden keine von mir eingegebenen Zeichen angezeigt. Keiner der anderen Tricks hat funktioniert. Dieser funktioniert:

stty sane

Hat für mich gearbeitet. Ich habe manchmal ein Terminal in einem nicht reagierenden Zustand, aber keiner der anderen Vorschläge konnte mir die Ausgabe wieder zurückgeben. Die anderen Vorschläge, die ich ausprobiert habe, aber nicht umgesetzt habe:

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

Quelle: /unix//a/79686/53236

Jesper Rønn-Jensen
quelle
0

Es gibt tatsächlich einige potenzielle Probleme, die möglicherweise mit Ihrer Umgebung zusammenhängen. Zunächst möchten Sie, wie @Jesper antwortete, dies tun stty sane. Möglicherweise können Sie damit jedoch nicht einmal die Umgebung richtig einrichten.

Dies ist auf den Unterschied zwischen /bin/bashund zurückzuführen /bin/sh. Führen Sie nach dem Öffnen Ihres tty aus /bin/bashund versuchen Sie es dann stty sane. Dies sollte alles beheben. Schließlich empfehle ich, so etwas zu .bashrc hinzuzufügen

Eine andere Möglichkeit wäre, eine vernünftige Software zu installieren.

user2262111
quelle