Eigentlich denke ich, dass die Antwort hier besser ist, also markieren Sie besser als dup in die andere Richtung
ilkkachu
Antworten:
165
Wenn Sie sich zum Beispiel in einem Unix / Linux-Terminal (Bash) befinden, verwenden Sie häufig die Befehle moreoder lessoder cat, um eine Datei anzuzeigen. Wenn Sie dies tun und die Datei nicht angezeigt werden soll (wie z. B. /bin/ls), erhalten Sie folgende Ausgabe:
Was hier vor sich geht, ist, dass Sie gerade versucht haben, eine Datei anzuzeigen, die ein Programm ist. Eine ausführbare Datei, die nicht mit den oben genannten Standard-Viewern angezeigt werden soll.
Methode 1 - Zurücksetzen
Um dieses Problem zu beheben, können Sie Folgendes tun:
Drücke mehrmals die Strg + C-Taste ( Ctrl+ C)
Geben Sie den Befehl ein resetund drücken Sie die Eingabetaste
Dies sollte normalerweise Ihr Terminal wieder in einen normaleren Modus versetzen. Ich erwähne noch eine Sache: Wenn Sie die obigen Schritte ausführen, tippen Sie sie blind in Ihr Terminal. Stellen Sie also sicher, dass Sie es richtig eingeben.
Methode Nr. 2 - normal
Wie in den Kommentaren von @sendmoreinfo vorgeschlagen, haben Sie möglicherweise mehr Glück, wenn Sie stattdessen die folgenden Befehle verwenden, wenn die oben genannten nicht funktionieren:
$ stty sane
$ tput rs1
Bestimmen eines Dateityps
Übrigens: Wenn Sie auf eine Datei stoßen und nicht sicher sind, ob dies Ihr Terminal beschädigen wird, können Sie die Datei mit dem Befehl überprüfen, der den Dateityp zurückmeldet file.
Beispielsweise zeigt mit /bin/lsdieser Datei die folgende Ausgabe:
resetist kein 100% iges Heilmittel gegen tödlichen Wahnsinn. Versuchen Sie, stty sanegefolgt von tput rs1.
Sendmoreinfo
@sendmoreinfo - danke Ich habe Ihren Vorschlag zur Antwort hinzugefügt. Ich hatte es stty saneaber nie benutzt tput.
slm
1
Eigentlich muss ich das genauer untersuchen. reset soll rs1 string senden. Ein guter Test (zumindest für xterm) besteht darin, den Cursor unsichtbar zu machen und zu prüfen, ob das Zurücksetzen ihn zurückbringt.
sendmoreinfo
4
resetarbeitete in meinem Fall
code_monk
1
clearfunktioniert auch bei leichten Fällen.
Navin
36
Ich hatte eine Gelegenheit, bei der keiner der üblichen Tricks resetoder stty sane(nach versehentlichem Aufrufen printeines Python-Bytearray) funktioniert hat. Ich hatte Erfolg mit Methode 2 in diesem hilfreichen Blog .
Ich habe seitdem einen sehr hilfreichen Alias erstellt:
Ich weiß, das ist alt, aber das ist die einzige Antwort, die für mich funktioniert hat! Danke
jredd
Dies echo -e "\033c"hat mir geholfen, eine durch Zeichen verstümmelte SSH-Anmeldeterminalsitzung zu bereinigen, die nach einer verwechselt wurde cat /etc/localtime.
Pro Backup
Dies funktionierte mit OpenBSD, während alle anderen dies nicht taten.
Warmwasser
1
Weitere Experimente mit dem Bildschirm (1) ergaben, dass alle Sitzungen (-D) zwangsweise getrennt wurden, bevor die Rücksetzbefehle für den zugrunde liegenden Bildschirm des Terminals ausgeführt wurden. Dies könnte das Problem beheben. Möglicherweise müssen Sie auch beschädigte Fensternamen umbenennen, die möglicherweise dieselben Binärdaten am Terminal erneut anzeigen, wodurch sie beschädigt werden (und anschließend erneut zurückgesetzt werden).
Mathe
1
Meine Terminalgröße (LINES) hat sich nach der Verwendung von vi bei der Verbindung mit der Konsole eines entfernten Linux-Hosts über SOL ungefähr halbiert. Die Remote-Sitzung hatte LINES = 24, während meine lokale MAC-Sitzung LINES = 51 hatte. echo -e "\ 033c" hat bei mir funktioniert, aber keine der anderen von mir ausgeführten Korrekturen ('stty sane', tput rs1, tput sgr0, reset).
Mark
7
Keine einzige vorherige Antwort hat für mich funktioniert. Aber dies schien den Trick in .bashrc zu tun.
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
und dann, wenn das Problem auftritt, geben Sie dies ein (obwohl Sie es wahrscheinlich nicht sehen können!)
(ctl-c, ctl-c, ctl-c)
fix
Vielen Dank an die vorherigen Einsender. Nebenbei bemerkt, der Grund, warum Ihr Terminal beim Anzeigen dieser ausführbaren Dateien (oder Keystores usw.) nicht mehr funktioniert, ist, dass diese Dateien häufig Binärsequenzen enthalten, die Steuercodes sind. Die Steuercodes können zufällige Aktionen ausführen, z. B. das Umschalten auf einen Grafikzeichensatz, das Festlegen der Vordergrund- und Hintergrundfarben usw.
Gleiches ist passiert. Nichts hat für mich funktioniert, nur diese Kombination ...
TrueY
1
Ich rief meinesane
Qodeninja
4
tmuxBenutzer können möglicherweise alle diese Befehle an ihre Shell senden, das Zurücksetzen wird jedoch nicht in den Bereich erhöht tmux.
Neues tmux-Fenster erstellen: Notieren ctrl-B ctmux list-panes
Sie sich in der Regel die Fensternummer,
die Ihrer Meinung nach nicht korrekt angezeigt wird 0. Nennen wir esPPP
Wählen Sie das tmux-Fenster aus. Hierbei XXXhandelt es sich um die Fensternummer, die nicht unbedingt mit der Fensternummer übereinstimmt.
ctrl-B XXXtmux send-key -R -t PPP
Sie werden dann alle Befehle in den anderen Antworten auf diese Frage sehen, die es in Ihre Shell geschafft haben, aber nicht funktioniert haben! Vielleicht tmux send-key -R -t PPPfunktioniert ein Blind , aber ich kann nicht testen.
Ich habe fast den gleichen Alias wie im vorherigen Beitrag, mit einer kleinen Änderung ( tput resetanstelle von rs1) und einem hinzugefügten Befehl ( setterm -reset):
Zusätzlich zu anderen Antworten, die zum Zurücksetzen des Terminals raten, stellte ich fest, dass die Beschädigung nicht vermieden werden kann, wenn sie nicht ordnungsgemäß bewacht wird. Deshalb sende ich die Ausgabe besser an einen einfachen, textfreundlichen Konverter cat -v:
docker logs myjenkinscontainer 2>&1 | cat -v
Das Anzeigen und Bearbeiten von Binärdateien scheint mit hexdump -Cund möglich zu sein vi -R( :%!xxd -g1für eine Hex-Ansicht und :%!xxd -g1 -rzum Speichern von Hex-Änderungen).
reset
.Antworten:
Wenn Sie sich zum Beispiel in einem Unix / Linux-Terminal (Bash) befinden, verwenden Sie häufig die Befehle
more
oderless
odercat
, um eine Datei anzuzeigen. Wenn Sie dies tun und die Datei nicht angezeigt werden soll (wie z. B./bin/ls
), erhalten Sie folgende Ausgabe:Was hier vor sich geht, ist, dass Sie gerade versucht haben, eine Datei anzuzeigen, die ein Programm ist. Eine ausführbare Datei, die nicht mit den oben genannten Standard-Viewern angezeigt werden soll.
Methode 1 - Zurücksetzen
Um dieses Problem zu beheben, können Sie Folgendes tun:
reset
und drücken Sie die EingabetasteDies sollte normalerweise Ihr Terminal wieder in einen normaleren Modus versetzen. Ich erwähne noch eine Sache: Wenn Sie die obigen Schritte ausführen, tippen Sie sie blind in Ihr Terminal. Stellen Sie also sicher, dass Sie es richtig eingeben.
Methode Nr. 2 - normal
Wie in den Kommentaren von @sendmoreinfo vorgeschlagen, haben Sie möglicherweise mehr Glück, wenn Sie stattdessen die folgenden Befehle verwenden, wenn die oben genannten nicht funktionieren:
Bestimmen eines Dateityps
Übrigens: Wenn Sie auf eine Datei stoßen und nicht sicher sind, ob dies Ihr Terminal beschädigen wird, können Sie die Datei mit dem Befehl überprüfen, der den Dateityp zurückmeldet
file
.Beispielsweise zeigt mit
/bin/ls
dieser Datei die folgende Ausgabe:quelle
reset
ist kein 100% iges Heilmittel gegen tödlichen Wahnsinn. Versuchen Sie,stty sane
gefolgt vontput rs1
.stty sane
aber nie benutzttput
.reset
arbeitete in meinem Fallclear
funktioniert auch bei leichten Fällen.Ich hatte eine Gelegenheit, bei der keiner der üblichen Tricks
reset
oderstty sane
(nach versehentlichem Aufrufenprint
eines Python-Bytearray) funktioniert hat. Ich hatte Erfolg mit Methode 2 in diesem hilfreichen Blog .Ich habe seitdem einen sehr hilfreichen Alias erstellt:
quelle
echo -e "\033c"
hat mir geholfen, eine durch Zeichen verstümmelte SSH-Anmeldeterminalsitzung zu bereinigen, die nach einer verwechselt wurdecat /etc/localtime
.Keine einzige vorherige Antwort hat für mich funktioniert. Aber dies schien den Trick in .bashrc zu tun.
und dann, wenn das Problem auftritt, geben Sie dies ein (obwohl Sie es wahrscheinlich nicht sehen können!)
Vielen Dank an die vorherigen Einsender. Nebenbei bemerkt, der Grund, warum Ihr Terminal beim Anzeigen dieser ausführbaren Dateien (oder Keystores usw.) nicht mehr funktioniert, ist, dass diese Dateien häufig Binärsequenzen enthalten, die Steuercodes sind. Die Steuercodes können zufällige Aktionen ausführen, z. B. das Umschalten auf einen Grafikzeichensatz, das Festlegen der Vordergrund- und Hintergrundfarben usw.
quelle
sane
tmux
Benutzer können möglicherweise alle diese Befehle an ihre Shell senden, das Zurücksetzen wird jedoch nicht in den Bereich erhöhttmux
.Neues tmux-Fenster erstellen: Notieren
ctrl-B c
tmux list-panes
Sie sich in der Regel die Fensternummer, die Ihrer Meinung nach nicht korrekt angezeigt wird0
. Nennen wir esPPP
Wählen Sie das tmux-Fenster aus. Hierbei
XXX
handelt es sich um die Fensternummer, die nicht unbedingt mit der Fensternummer übereinstimmt.ctrl-B XXX
tmux send-key -R -t PPP
Sie werden dann alle Befehle in den anderen Antworten auf diese Frage sehen, die es in Ihre Shell geschafft haben, aber nicht funktioniert haben! Vielleicht
tmux send-key -R -t PPP
funktioniert ein Blind , aber ich kann nicht testen.quelle
Ich habe fast den gleichen Alias wie im vorherigen Beitrag, mit einer kleinen Änderung (
tput reset
anstelle vonrs1
) und einem hinzugefügten Befehl (setterm -reset
):quelle
Nichts oben hat mir geholfen. Allerdings erwähnte Jack Wasey tmux, also rannte ich einfach weiter
tmux
, ging wieder und alles war wieder normal.quelle
Zusätzlich zu anderen Antworten, die zum Zurücksetzen des Terminals raten, stellte ich fest, dass die Beschädigung nicht vermieden werden kann, wenn sie nicht ordnungsgemäß bewacht wird. Deshalb sende ich die Ausgabe besser an einen einfachen, textfreundlichen Konverter
cat -v
:Das Anzeigen und Bearbeiten von Binärdateien scheint mit
hexdump -C
und möglich zu seinvi -R
(:%!xxd -g1
für eine Hex-Ansicht und:%!xxd -g1 -r
zum Speichern von Hex-Änderungen).quelle