Wie korrigiere ich den nicht erkennbaren Code in meinem Debian?

7

Nach dem Ausführen von Programmen, die nicht erkennbaren Code ausgeben, ist die gesamte Shell mit nicht erkennbarem Code gefüllt.

Alt-Text

Wie kann ich das korrigieren?

Jichao
quelle
Sieht so aus, als hätte es den Zeichensatz / die Codierung der Shell geändert. Ich bin mir nicht sicher, wie ich es zurücksetzen soll.
Matthew Lock

Antworten:

7

SI / SO VT100-Steuerzeichen

Die verstümmelten Zeichen sind wahrscheinlich darauf zurückzuführen, dass das Terminal ein SIZeichen erhält (Shift In; ASCII 14; Control-N). SIist ein VT100-Steuerzeichen, das dazu führen kann, dass das Terminal zu einem alternativen Zeichensatz wechselt. Viele echte Terminals (z. B. ein tatsächliches Hardwaregerät oder nur die Nur-Text-Konsole eines Betriebssystems) und Terminalprogramme berücksichtigen diesen Escape-Code.

Der direkte Weg, um zum normalen Zeichensatz zurückzukehren, besteht darin, ein SO-Zeichen (Shift Out; ASCII 15; Control-O) an das Terminal zu senden.

Wiederherstellung

Da der Zeichensatz umgeschaltet ist, müssen Sie möglicherweise die Wiederherstellungsbefehle "blind" eingeben (ohne sich darauf verlassen zu müssen, was Sie eingegeben haben).

Normalerweise ist der echoBefehl nützlich. Oft können Sie
E C H O Space Control- V Control- O Enter / Return
eingeben, damit das Terminal ein Control-O sieht (das Control-V teilt der Eingangsseite des Terminals mit, dass das nächste buchstäblich übergeben werden soll, andernfalls "frisst" die Eingangsseite das Zeichen davor bekommt die Shell und damit bevor sie an die Ausgangsseite des Terminals zurückgesendet werden kann).

Wenn Sie eine vernünftige Shell mit einer printfeingebauten Shell (oder keine eingebaute Shell und einen vernünftigen externen printfBefehl) annehmen können , können Sie printf '\017'ein Control-O an das Terminal senden.

Chris Johnsen
quelle
Wenn jemand läuft immer in dieses Problem auf einem Endgerät , das nicht von einem VT100, eine Alternative zu der VT100 spezifischen Kontrollsequenz abgeleitet wird erzeugt über Echo oder printf ist tput rmacs(wie erwähnt in einer anderen Antwort von Ignacio Vazquez-Abrams ).
Chris Johnsen
Die Antwort ist richtig, aber wenn Sie das ECHO als Großbuchstaben anzeigen lassen, könnten Sie jemanden irreführen, sie in Großbuchstaben einzugeben ... was fehlschlagen würde.
CarlF
9

Haben Sie den Unix- resetBefehl ausprobiert ?

Dies ist normalerweise das Ergebnis des Dumpings einer Binärdatei (eines Programms oder einer Datendatei) auf dem Terminal ( cat some.mp3oder ähnlichem). Normalerweise resetbringt das Tippen Ihr Terminal wieder in Ordnung. Wenn dies nicht funktioniert, versuchen Sie als Nächstes eine Rücksetzfunktion für Ihre Terminalanwendung. Suchen Sie in den Menüs der Anwendung danach. (PuTTY hat zum Beispiel ein Reset Terminalin seinem Systemmenü.)

In seltenen Fällen funktioniert beides nicht, und Sie müssen nur das Terminal oder die Shell herunterfahren und ein neues starten.

user12889
quelle