Ich habe versucht, Befehl cat
mit einer ausführbaren Datei:
cat /bin/ls
Jetzt kann ich in diesem Terminal (Linux-Konsole) kein Wort lesen. Wie kann ich es reparieren?
Ich habe versucht, Befehl cat
mit einer ausführbaren Datei:
cat /bin/ls
Jetzt kann ich in diesem Terminal (Linux-Konsole) kein Wort lesen. Wie kann ich es reparieren?
Antworten:
Wenn Sie sich zum Beispiel in einem Unix / Linux-Terminal (Bash) befinden, verwenden Sie häufig die Befehle more
oder less
oder 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.
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.
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
Ü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:
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
reset
ist kein 100% iges Heilmittel gegen tödlichen Wahnsinn. Versuchen Sie, stty sane
gefolgt von tput rs1
.
stty sane
aber nie benutzt tput
.
reset
arbeitete in meinem Fall
clear
funktioniert auch bei leichten Fällen.
Ich hatte eine Gelegenheit, bei der keiner der üblichen Tricks reset
oder stty sane
(nach versehentlichem Aufrufen print
eines Python-Bytearray) funktioniert hat. Ich hatte Erfolg mit Methode 2 in diesem hilfreichen Blog .
Ich habe seitdem einen sehr hilfreichen Alias erstellt:
alias fix='echo -e "\033c"'
echo -e "\033c"
hat mir geholfen, eine durch Zeichen verstümmelte SSH-Anmeldeterminalsitzung zu bereinigen, die nach einer verwechselt wurde cat /etc/localtime
.
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.
sane
tmux
Benutzer 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 c
tmux 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 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.
Ich habe fast den gleichen Alias wie im vorherigen Beitrag, mit einer kleinen Änderung ( tput reset
anstelle von rs1
) und einem hinzugefügten Befehl ( setterm -reset
):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
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 -C
und möglich zu sein vi -R
( :%!xxd -g1
für eine Hex-Ansicht und :%!xxd -g1 -r
zum Speichern von Hex-Änderungen).
reset
.