2013-07-16 8 views
25

Von Zeit zu Zeit muss ich ein Befehlszeilenprogramm (ein Python-Skript) ausführen, dessen Ausgabe mein Terminal zu brechen scheint. Nachdem die Ausführung beendet ist, ist die Tipp-Rückmeldung weg (ich kann nicht sehen, was ich tippe), und auch Zeilenumbrüche werden nicht angezeigt. Dies geschieht, wenn das Terminal über Putty und lokal bei Verwendung von gnome-terminal aus der Ferne gestartet wird.Linux Terminal: Eingabe von Feedback weg, Zeilenumbrüche nicht angezeigt

Zum Beispiel, nachdem das Problem geschieht, wenn ich tippe ENTERpwd ENTER, würde ich erwarten, zu sehen:

[[email protected] ~]$ 
[[email protected] ~]$ pwd 
/home/userA 
[[email protected] ~]$ 

Aber eigentlich ist der Ausgang:

[[email protected] ~]$ [[email protected] ~]$ /home/userA 
                  [[email protected] ~]$ 

Die Die einzige Möglichkeit, das Problem zu beheben, besteht darin, das Terminal zu schließen und ein neues zu starten.

Vielleicht verwandt sein: Die Skript-Ausgabe enthält einige Terminal-basierte Formatierung (z. B. Vordergrund/Hintergrund invertieren, um einige Statusmeldungen hervorzuheben). Wenn ich diese Ausgabe in eine Datei ablege, kann ich Dinge wie [07mSome Message Here[0m sehen.

Irgendwelche Ideen, was ich tun könnte, um dies zu verhindern?

+0

Sie scheinen in einer Subshell zu sein, aus der Sie aussteigen müssen, um zu Ihrem ursprünglichen Terminal zurückzukehren. Probieren Sie einfach exit; pwd –

+1

Dies ist Off-Topic für SO; gehört zu [unix.se] oder [su]. Das heißt, Sie können eine defekte Terminal-Sitzung in der Regel reparieren, indem Sie "stty sene" blind eingeben, wodurch Ihr Terminal wieder in die "gesunden" Einstellungen zurückkehrt. –

+1

Wenn Sie Probleme mit dem Terminal haben, können Sie versuchen, sie mit 'reset' oder' stty sane' zu ​​beheben. – cabad

Antwort

59

den Befehl Ausführen „Reset“ und Ihr Terminal sollte
Referenz wiederhergestellt werden:
http://www.commandlinefu.com/commands/view/32/salvage-a-borked-terminal

Dieses Problem geschieht in der Regel, wenn binäre Daten an das Terminal „STDOUT“ Dumping, die, wenn die Escape-Codes empfangen verarbeitet werden Sie können alles tun, um die Farbe des Textes zu ändern, das Echo zu deaktivieren oder sogar den Zeichensatz zu ändern.

Der einfache Weg, dies zu vermeiden, ist sicherzustellen, dass Sie keine unbekannten Binärdaten an das Terminal zurückschicken, und wenn Sie es dann in Hexadezimal konvertieren müssen, um sicherzustellen, dass es die Terminaleinstellungen nicht ändert.

+2

'reset', das ist, was ich gesucht habe. Danke . –

+0

Vielen Dank! In meinem Fall führte das Ausführen von ipython innerhalb eines Kubernetes-Containers nicht zu einer Eingabeeingabe, die durch das Ausführen von 'reset' behoben wurde. – dusan

+0

Ich habe das gleiche Problem, wenn ich 'bash x.sh' innerhalb einer SSH-Shell ausführen. 'reset' hilft mir aber wenn ich die .sh Datei erneut ausführe, erscheint das Problem wieder. Haben Sie eine Idee? (die .sh-Datei führt im Grunde nur 'sbt-Paket' aus, um mein scala-Projekt zu erstellen) –