it-swarm.com.de

Mit welchen Befehlen kann ich mein Terminal zurücksetzen und löschen?

Ich habe den Befehl verwendet:

reset

mein Terminal zu löschen. Obwohl ich mir ziemlich sicher bin, dass das nicht das ist, was ich tun sollte. Zurücksetzen setzt, wie der Name schon sagt, Ihr gesamtes Terminal zurück (ändert viele Dinge). Folgendes möchte ich:

Ich möchte grundsätzlich den Befehl clear verwenden. Wenn Sie jedoch löschen und dann nach oben scrollen, erhalten Sie immer noch Tonnen von Dingen von früher. Im Allgemeinen ist dies kein Problem, aber ich schaue auf lange Bruttoprotokolle und möchte sicherstellen, dass ich nur die neueste ansehe. Ich weiß, dass ich more oder so etwas verwenden könnte, aber ich bevorzuge diesen Ansatz.

62

Der Scrollback-Buffer ist kein Feature von bash, sondern des Terminal-Programms. Sie haben nicht gesagt, welches Terminal Sie verwenden.

Wenn Sie xterm verwenden, können Sie möglicherweise die gespeicherten Zeilen löschen, indem Sie ESC-c an das Terminal senden.

Dies funktioniert möglicherweise nicht mit jedem Terminalprogramm, das Sie verwenden.

Unter Linux wird dies wahrscheinlich funktionieren:

echo -e '\0033\0143'

unter FreeBSD akzeptiert echo -e nicht, also können Sie versuchen:

printf '\033\143'
56
Craig

Verwenden Sie für jeden Auftrag das richtige Werkzeug:

  • Verwenden Sie clear, um das Terminalfenster zu löschen.

  • Verwenden Sie reset, um Ihr Terminal zurückzusetzen, wenn es durch Steuersequenzen durcheinander gerät.

  • Verwenden Sie cat nur, wenn Sie eine ganze Menge Daten von einem Ort zum anderen streamen möchten ohne Unterbrechung.

  • Verwenden Sie ein Pager-Programm wie less oder most, um Ausgabeseiten anzuzeigen.

  • Verwenden Sie tail -f /var/log/foo.log /var/log/bar.log, um verschiedene Protokolldateien anzuzeigen.

    • Mit GNU tail ist die Option -F besser, da sie der Datei auch dann folgen kann, wenn an ihrer Stelle eine neue Datei angezeigt wird, wie es für Protokolldateien üblich ist.
49
bignose

Um die technische Antwort zu geben: reset initialisiert das Terminal neu, als ob es von Grund auf neu geöffnet worden wäre. stty sane wird viele der gleichen Funktionen ausführen (ohne das Zurücksetzen). Dies ist dasselbe wie ^L (Strg + L) (irrc) und tput clear. Trotz der Aussage des vorherigen Posters (@grawity) gibt clear keine Zeilenumbrüche aus. Es sendet das Zurücksetzen von TERM wie in terminfo oder termcap definiert. Für mich ist es mit gnome-terminal (xterm) dasselbe wie der Befehl Perl -e'print "\33[H\33[2J"'.

Wenn Sie nur den Puffer löschen möchten - im Vergleich zum Zurücksetzen des gesamten Terminals -, versuchen Sie diesen tput reset. Es sollte sehr schnell sein und tun, was Sie wollen. (Obwohl Sie wirklich Dateien mit less lesen sollten)

tput reset, sendet den terminfo-Wert zum Zurücksetzen - auf meinem Terminal (xterm) ist er derselbe wie Perl -e'print "\33c"'

21
Evan Carroll

Der wahrscheinlich beste Weg, um alles zu löschen, ist die Verwendung der Terminalfunktion:

  • Konsole: Ctrl+Shift+K Ansicht → Scrollback löschen und zurücksetzen
  • GNOME-Terminal: Bearbeiten → Zurücksetzen und Löschen
  • Kitt: Ctrl+right-click → Scrollback löschen

Auf diese Weise werden beide Puffer bereinigt, und der Terminalstatus wird auf genau den Wert zurückgesetzt, den er beim Start hatte (was möglicherweise mit reset identisch ist).

8
grawity

Ein anderes Terminal ist iTerm2, und es hat eine etwas seltsame Escape-Sequenz, mit der das Zurückblättern gelöscht wird. In einer Bash Shell verwende ich so etwas wie:

echo -ne '\033]50;ClearScrollback\a'

in einem Skript. Es handelt sich also im Grunde genommen um ein ESC-Zeichen, gefolgt von "]50;ClearScrollback" und einem BEL-Zeichen.

8
Sam Mason
 weniger -W + F foo.log 

+F steht für "Folgen", ähnlich wie tail -f, aber Sie können auch zurückblättern.

Bei allen vte-basierten Terminals (GNOME, Xfce, Roxterm) und KDE-Konsole können Sie mit dem Scroll-Rad innerhalb von less scrollen. Das finde ich recht praktisch.


Alternative zu clear:

 Perl -e 'print "\ n" x512;' 

 xterm -e 'tail -f foo.log' 
3
grawity

Auf Mac OS X Terminal.app:

Ansicht -> Scrollback löschen (oder command-K)

3
acajaja

Es ist kein "Bash" -Problem. Dies hängt vom verwendeten Terminal ab. Zum Beispiel verwende ich "iterm2" mit MacBook, um eine Remote-Linux-Maschine zu verbinden. Sie können den Puffer mit "Befehl + K" bereinigen oder im Menü "Bearbeiten" -> "Puffer löschen" auswählen.

2
Steven Huang

Um den Bildschirmpuffer für Hardware-TTY in FreeBSD zu bereinigen, können Sie "vidcontrol - Systemkonsolensteuerung und Konfigurationsdienstprogramm" mit dem Parameter -C Leeren Sie den Verlaufspuffer.

vidcontrol -C

der Befehl löscht den gesamten Bildschirmpuffer für die aktuelle Konsole, über dem, was Sie gerade sehen. Vielleicht möchten Sie zuerst "löschen" oder nicht - ganz nach Ihren Wünschen.

1
user

So löschen Sie den Konsolenbildschirm und den Scrollback-Puffer beim Ausführen von PuTTY:

echo -en "\ec\e[3J"

Dies sind eigentlich 2 "Esc" -Sequenzen, die unabhängig voneinander agieren. Sie können in der folgenden Reihenfolge verwendet werden:

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

Wenn Sie echo -en "\ec" verwenden, um das Terminal zurückzusetzen, werden möglicherweise einige Ihrer anderen Terminaleinstellungen geändert. Anstelle von "Zurücksetzen" können Sie Folgendes tun:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

Sie können dies in ein Shell-Skript einfügen und es funktioniert einwandfrei.


Falls es einige Systemabhängigkeiten gibt:

Ich verwende PuTTY Connection Manager (Version 0.7.1 BETA (Build 136)) mit PuTTY (Release 0.60).

Eingabe:

echo \"$TERM\"; /bin/sh --version

berichte:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...
1
Kevin Fegan

Wenn Sie sicherstellen möchten, dass Sie die neuesten Einträge in einer Protokolldatei anzeigen, ist es wahrscheinlich am besten, tail anstelle von zu verwenden clear/cat, von der ich annehme, dass Sie sie verwenden.

0
Josh K

Hmmm. Ich denke, wenn Sie konsole laufen, haben Sie Pech. Früher konnte man nur "Scrollback löschen". Konsole lässt Sie das nicht mehr tun. Sie müssen es auch zurücksetzen, damit alle Programme, die Sie ausgeführt haben, beendet werden. Ich brauche wohl ein neues Terminalprogramm ......

0
Bruce