Hat ein Cat / Dev / Urandom - kaputtes Terminal

31

Wenn Ihr Shell-Zeichensatz aus Neugier davon abweicht, etwas zu tun, cat /dev/urandomgibt es eine Möglichkeit, dies zu beheben?

Pedro Montoto García
quelle
6
Klar ... tu das nicht! Verwenden Sie auch, wenn Sie der Meinung sind, dass ein Befehl ungültige Zeichen erzeugt cat -A.
Juni
2
Außerdem war ich immer neugierig, wie Sie catIhren Zeichensatz
auflösen
cat / bin / ls behebt dies häufig (nicht sicher warum)
skarface
2
@crasic: Es sendet Binärdateien an das Terminal, und jedes Terminal hat Möglichkeiten, die Schriftart / Farbe / usw. durch Empfang von Sonderzeichen zu ändern. Siehe das Wunderbare: linusakesson.net/programming/tty (auch bekannt als "TTY entmystifiziert"). Abhängig von Ihrer TERM-Einstellung wird es auch unterschiedlich reagieren (und natürlich davon, welche Bytes es empfängt und in welcher Reihenfolge).
Olivier Dulac
@skarface: Sie hatten wahrscheinlich Glück, dass die Binärdatei von / bin / ls gegen Ende Byte-Sequenzen enthielt, die die Anzeige reparierten. Es hängt vom Betriebssystem, der Binärdatei (dh welche Version, welche Kompilierungsoption usw.) und der TERM-Einstellung Ihres Terminals ab. Ich empfehle daher dringend, stattdessen "stty sane" zu verwenden ^^
Olivier Dulac

Antworten:

50

Versuchen Sie eine der folgenden Möglichkeiten:

stty sane

oder

reset

Wenn beide nicht funktionieren oder Ihr Terminal so durcheinander ist, dass Sie nicht einmal Befehle eingeben können, sollten Sie das Terminal schließen und ein neues starten.

Beachten Sie, dass dies stty sanedurch POSIX definiert wird, während dies resetnicht der Fall ist. Das bedeutet, dass es auf einigen Systemen möglicherweise kein resetoder ein völlig anderes Verfahren gibt, z. B. das Zurücksetzen des gesamten Systems. Ich bin noch keinem System ohne begegnet reset.

Weitere Hintergrundinformationen finden Sie im Kapitel "Zurücksetzen Ihres Terminals" unter "Linux-Tastatur und Konsolen-HOWTO " .

lesmana
quelle
Ich habe dir die richtige Antwort gegeben, weil du der Erste warst. Entschuldigung an die anderen.
Pedro Montoto García
Im Allgemeinen ist es unwahrscheinlich, dass durch das Schreiben von Zufallsbytes in ein Terminal eine Situation entsteht, deren Behebung stty sane erfordert. das kommt eher von einem Programmabsturz.
Random832
stty saneist die sichere und richtige Art und Weise (ich bin müde von "Reset" aus den Gründen, die ich in Kommentaren unter Lains Antwort angegeben habe)
Olivier Dulac
1
@OlivierDulac Vielen Dank, dass Sie Ihre Erfahrungen geteilt haben. Ich habe recherchiert und gelernt, dass dies resetnicht durch POSIX definiert ist.
Lesmana
1
@Iain Ich glaube nicht, dass @OlivierDulac FUD verbreitet. Die Referenz, resetdie nicht "sicher" ist, ist die Tatsache, dass sie nicht von POSIX definiert wird. Bitte hören Sie auf, die FUD zu verbreiten, die @OlivierDulac verbreitet.
Lesmana
20

Sie können versuchen, den Befehl reset zu verwenden .

user9517 unterstützt GoFundMonica
quelle
4
Sie haben die Manpage verlinkt und implizit ein gutes RTFM empfohlen. Du bist heute mein Held, danke.
Luke404
Dies funktioniert unter vielen Unix-Betriebssystemen ... Aber eine Warnung: Seien Sie vorsichtig: Auf einigen Systemen (z. B. anderen Betriebssystemen oder einer anderen Linux-Distribution?) Kann dies zu einem System-Reset führen (ich glaube, dass dies z. B. der Fall ist) Einige Versionen von Solaris). Setzen Sie daher das System zurück, dh erzwingen Sie einen Neustart (ohne ordnungsgemäßes Herunterfahren) ... Seien Sie wie bei jedem Befehl vorsichtig. (Dies gilt auch für andere Befehle: Einige "tar" - Befehle entfernen beispielsweise NICHT "/" - Präfixe und können daher vertrauliche Dateien usw. überschreiben. Vergewissern Sie sich immer, dass Sie wissen, wie der Befehl, den Sie verwenden möchten, auf Ihrem System funktioniert verwenden.)
Olivier Dulac
1
@OlivierDulac; Das OP hat seine Linux-Frage mit Tags versehen, sodass er eine linuxzentrierte Antwort erhielt, obwohl dies auf anderen Unix-Systemen einschließlich Solaris ohne Probleme funktionieren wird. Ich habe 15 Jahre mit Solaris gearbeitet! Sie verwechseln den Befehl SPARC Open Boot Prom reset mit dem Befehl userland reset (1). Wenn Sie das Zurücksetzen an der Eingabeaufforderung ok ausführen, wird wahrscheinlich kein beschädigtes Terminal wiederhergestellt.
User9517 unterstützt GoFundMonica
@lain: ah, das könnte tatsächlich so sein (Open Boot-Abschlussball). Trotzdem bedeutet dies, dass in einigen Umgebungen "reset" mit dem Zurücksetzen des Hosts verbunden ist. Daher bevorzuge ich, dass Benutzer (auch wenn sie "meistens" unter Linux arbeiten) den Befehl "safe" "stty sane" lernen / verwenden (der angibt, was ist) es funktioniert und ist nicht so vieldeutig wie "zurücksetzen") ... deshalb warne ich die Leser davor.
Olivier Dulac
@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD - alle Links auf tset zurückgesetzt OBP ist kein Host-Betriebssystem und zählt daher nicht.
user9517 unterstützt GoFundMonica
11

Der resetBefehl sollte funktionieren.

Changaco
quelle