Ich habe versucht, Befehl catmit 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 catmit 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 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.
Um dieses Problem zu beheben, können Sie Folgendes tun:
resetund 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/lsdieser 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
resetist kein 100% iges Heilmittel gegen tödlichen Wahnsinn. Versuchen Sie, stty sanegefolgt von tput rs1.
stty saneaber nie benutzt tput.
resetarbeitete in meinem Fall
clearfunktioniert auch bei leichten Fällen.
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:
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
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 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 XXXhandelt 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 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):
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 -Cund möglich zu sein vi -R( :%!xxd -g1für eine Hex-Ansicht und :%!xxd -g1 -rzum Speichern von Hex-Änderungen).
reset.