Frage Hat eine Katze / dev / urandom - Gebrochenes Terminal


Aus Neugierde, wenn dein Shell-Zeichensatz etwas kaputt macht cat /dev/urandom Gibt es eine Möglichkeit, das zu beheben?


31
2017-08-28 12:10


Ursprung


Sicher ... tu das nicht! Wenn Sie der Meinung sind, dass ein Befehl ungültige Zeichen erzeugt, verwenden Sie cat -A. - jnylen
Außerdem war ich schon immer neugierig wie cat kann deinen Zeichensatz brechen ... - crasic
cat / bin / ls behebt dies häufig (nicht sicher warum) - skarface
@crasic: Es sendet binär an das Terminal, und jedes Terminal hat Möglichkeiten, Schriftart / Farbe / etc durch den Empfang spezieller Zeichen zu ändern. Sehen Sie das Wunderbare: linusakesson.net/programming/tty (aka "die TTY entmystifiziert.) Abhängig von Ihrer TERM-Einstellung wird es auch anders reagieren (und natürlich abhängig davon, welche Bytes es empfängt und in welcher Reihenfolge). - Olivier Dulac
@skarface: Du hast wahrscheinlich Glück gehabt, dass die Binärdatei von / bin / ls am Ende Bytefolgen hatte, die das Display fixierten. Es hängt vom Betriebssystem ab, von der binären Version (dh welche Version, welches Compilier-optino verwendet wurde usw.) und der TERM-Einstellung Ihres Terminals ... also empfehle ich Ihnen dringend "stty sane" anstatt ^^ zu verwenden - Olivier Dulac


Antworten:


Probieren Sie eine der folgenden Möglichkeiten aus:

stty sane

oder

reset

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

Beachten Sie, dass stty sane wird von POSIX definiert wohingegen reset ist nicht. Das bedeutet, dass auf manchen Systemen möglicherweise keine reset oder es könnte etwas völlig anderes machen, wie das ganze System zurücksetzen. Ich habe noch kein System ohne gefunden reset.

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


50
2017-08-28 12:15



Ich gab dir die richtige Antwort, weil du der Erste warst. Entschuldigung für die anderen. - Pedro Montoto García
Im Allgemeinen ist es unwahrscheinlich, dass das Schreiben von zufälligen Bytes in ein Terminal es in eine Situation bringt, die fest zu reparieren ist. Das kommt eher von einem Programmabsturz. - Random832
stty sane ist der sichere und richtige Weg (Ich bin müde von "Reset" aus den Gründen, die ich in den Kommentaren unter der Antwort von Lain angegeben habe) - Olivier Dulac
@OlivierDulac Vielen Dank für Ihre Erfahrungen. Ich habe recherchiert und gelernt reset ist nicht von POSIX definiert. - lesmana
@Iain Ich glaube nicht, dass @OlivierDulac FUD verbreitet. Der Hinweis, dass reset ist nicht "sicher" ist die Tatsache, dass es nicht von POSIX definiert ist. Bitte hör auf, die FUD zu verteilen, dass @OlivierDulac FUD verbreitet. - lesmana


Sie können versuchen, die zurücksetzen Befehl.


20
2017-08-28 12:13



Sie haben die man-Seite verlinkt und implizit eine gute RTFM empfohlen. Du bist mein Held heute, danke. - Luke404
Dies funktioniert auf vielen Unixen ... Aber ein Wort der Warnung: sei vorsichtig: auf einigen Systemen (dh anderen Betriebssystemen oder vielleicht einer anderen Distribution von Linux?) Könnte dies einen Systemreset auslösen (ich glaube zum Beispiel, dass es auf einige Versionen von Solaris). Daher das System zurücksetzen, dh einen Neustart erzwingen (ohne ordnungsgemäßes Herunterfahren) ... Wie für jeden Befehl, seien Sie vorsichtig. (Dies gilt auch für andere Befehle: einige 'tar' zum Beispiel entfernen NICHT "/" Präfixe und können daher sensible Dateien usw. überschreiben. Stellen Sie immer sicher, dass Sie wissen, wie der Befehl, den Sie verwenden wollen, auf Ihrem System funktioniert benutzen.) - Olivier Dulac
@OlivierDulac; Das OP hat seine Frage linux getaggt, also bekam er eine linuxzentrische Antwort, obwohl es auf anderen unix Systemen einschließlich Solaris ohne Problem funktioniert. 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, werden Sie sich wahrscheinlich nicht von einem beschädigten Terminal erholen. - Iain
@Lain: Ah, das könnte das sein (Open Boot Prom), in der Tat. Aber es bedeutet immer noch, dass "reset" in einigen Umgebungen mit dem Zurücksetzen des Hosts verbunden ist. Daher bevorzuge ich Leute (auch wenn sie "meistens" auf Linux sind), den "sicheren" "stty sane" Befehl zu lernen / zu verwenden es tut, und ist nicht so zweideutig wie "Reset") ... deshalb warne ich die Leser davor. - Olivier Dulac
@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD alle Links auf tset zurückgesetzt - bitte gebe Beweise für deine Fehlinformationen, außer dass du etwas falsch meldest. OBP ist kein Host-Betriebssystem, daher zählt es nicht. - Iain


Das reset Befehl sollte funktionieren.


11
2017-08-28 12:12