Linux / Befehl clear: Terminalanzeige löschen
clear ist ein Befehl, der den Terminalbildschirm löscht, um den Arbeitsbereich aufzuräumen. In einer typischen ncurses-Implementierung versucht er nicht nur den aktuellen Bildschirm zu löschen, sondern auch den Scrollback-Puffer, falls das Terminal dies unterstützt, und die Verwendung der Option -x ermöglicht es, den Scrollback beizubehalten.
clear löscht weder die Befehls-Historie noch Dateien. Da nur die Anzeige auf dem Bildschirm verändert wird, können vorherige Befehle normalerweise erneut über die History-Funktion der Shell angezeigt werden.
Ergänzende Befehle und Anwendungsfälle finden Sie in Liste der häufig verwendeten Befehle in Linux.
Was ist der Befehl clear?
clear prüft den Typ des Terminals aus der Umgebungsvariablen TERM und verwendet die Fähigkeitsinformationen aus der Terminfo-Datenbank, um die entsprechenden Steuersequenzen auszugeben. Daher ist es anders, als einfach mehrere Leerzeilen auszudrucken, und das detaillierte Verhalten kann je nach Terminaltyp und Implementierung variieren.
Die Optionsbeschreibungen in diesem Artikel basieren auf der Version von clear in ncurses, die unter Linux weit verbreitet ist.
Grundlegende Syntax
clear [-x] [-T terminal_type] clear -V
Die häufigste Verwendung besteht darin, es ohne Optionen auszuführen.
clear
Was clear entfernt und nicht entfernt
| Ziel | Aktion |
|---|---|
| Aktueller Terminalbildschirm | Löscht den Bildschirm und setzt den Cursor auf die Anfangsposition. |
| Scrollback-Puffer | Wenn das Terminal und ncurses die entsprechenden Funktionen unterstützen, wird der Standardausführung versucht, diesen zu löschen. Sie können dieses Verhalten mit -x verhindern. |
| Shell-Befehlsverlauf | Löscht nicht. Sie können dies erneut mit history oder der Pfeil-nach-oben-Taste überprüfen. |
| Quelle der Befehlsausgabe | Hat keine Auswirkung auf Protokolldateien oder von Befehlen erzeugte Daten. |
| Shell-Variablen und aktuelles Verzeichnis | Ändert sich nicht. |
Scrollback beibehalten -x
clear -x
-x löscht den Bildschirm, versucht jedoch nicht, den Scrollback-Puffer zu löschen. Es ist nützlich, wenn Sie den Bildschirm aufräumen möchten und dann zu vorherigen Ausgaben zurückscrollen wollen.
Diese Option ist ein Feature von ncurses clear. Sie wird möglicherweise nicht von anderen Betriebssystemen oder Implementierungen unterstützt, daher überprüfen Sie clear -V oder das Systemhandbuch.
Terminaltyp angeben -T
clear -T xterm-256color
Im Allgemeinen ruft clear den Terminaltyp automatisch aus der TERM-Umgebungsvariablen ab, sodass -T nicht erforderlich ist. Sie wird nur explizit verwendet, wenn Probleme bei der Terminalerkennung diagnostiziert werden oder Steuersequenzen für einen bestimmten Typ generiert werden.
printf '%s\n' "$TERM" infocmp "$TERM"
Wenn Sie einen Typ angeben, der nicht dem tatsächlichen Terminal entspricht, kann es passieren, dass der Bildschirm unerwartet gelöscht wird oder Steuerzeichen erscheinen.
Option Zusammenfassung
| Option | Beschreibung |
|---|---|
-x |
Die Aktion zum Löschen des Scrollback-Puffers wird weggelassen. |
-T type |
Verwendet die Funktionsinformationen des angegebenen Terminaltyps anstelle von TERM. |
-V |
Zeigt die verknüpfte ncurses-Version an und beendet das Programm. |
Unterschied zwischen Ctrl+L und clear
In den Standard-Readline-Tasteneinstellungen von Bash zeichnet Ctrl+L den Bildschirm neu und verschiebt die aktuelle Eingabezeile nach oben. Dies ist praktisch, um den Bildschirm schnell zu löschen, aber es kann nicht garantiert werden, dass die Art und Weise, wie das Terminal den Scrollback handhabt, mit clear identisch ist.
| Methode | Vorteile | Funktionen |
|---|---|---|
clear |
Verwendet Terminal-Funktionalitätsinformationen und ermöglicht die Auswahl von Optionen. | Je nach Implementierung kann auch der Scrollback-Puffer gelöscht werden; der Shell-Befehlsverlauf bleibt erhalten. |
clear -x |
Es ist einfach, zur vorherigen Ausgabe zurückzukehren, während der Bildschirm gelöscht wird. | Es ist eine Option in der ncurses-Implementierung. |
Ctrl+L |
Es kann schnell von der Tastatur aus während des Tippens ausgeführt werden. | Das Verhalten kann je nach den Readline-Tasteneinstellungen der Shell und dem Terminal variieren. |
Unterschied zwischen Clear und Reset
clear wird verwendet, um den Bildschirm eines normal funktionierenden Terminals zu löschen. Andererseits wird reset verwendet, um den Terminalzustand zu reinitialisieren, wenn die Zeichendarstellung, der Eingabemodus oder Zeilenumbrüche durch binäre Ausgaben oder falsche Steuersequenzen beschädigt werden.
reset
Wenn der Bildschirm einfach überfüllt ist, ist clear schneller, während reset besser geeignet ist, wenn eingetippte Zeichen nicht sichtbar sind oder der Anzeigemodus beschädigt ist.
Bildschirm mit tput löschen
tput kann auch die Terminfo-Datenbank verwenden, um Terminalfähigkeiten auszugeben.
tput clear
Es ist nützlich, wenn man Terminal-Steuerfunktionen in Shell-Skripten kombinieren muss. Bei nicht-interaktiven Aufgaben, bei denen die Ausgabe in eine Datei oder eine Pipe gesendet wird, können die Steuersequenzen jedoch als unnötige Daten verbleiben, daher wird empfohlen, die Terminalverbindung zu überprüfen.
Bei der Verwendung in Skripten
Es sei denn, es handelt sich um ein interaktives Programm wie ein Dashboard, das den Bildschirm wiederholt aktualisiert, ist es für Skripte besser, den Bildschirm des Benutzers nicht willkürlich zu löschen. Dies liegt daran, dass es schwierig wird, Fehlermeldungen und vorherige Ergebnisse zu vergleichen, und Steuerzeichen können sich in Umgebungen zur Protokollsammlung vermischen.
if test -t 1; then clear fi
test -t 1 prüft, ob die Standardausgabe mit einem Terminal verbunden ist. Wenn das Ziel die Bildschirmaktualisierung ist, sollten auch watch oder Terminal-UI-Tools in Betracht gezogen werden, die für den jeweiligen Zweck geeignet sind.
Fehlerbehebung
TERM-Umgebungsvariable nicht gesetzt
Dies kann auftreten, wenn TERM nicht gesetzt ist oder der Befehl in einer abnormalen, nicht-interaktiven Umgebung ausgeführt wird.
printf '%s\n' "$TERM"
Anstatt willkürlich einen Wert anzugeben, ohne den tatsächlichen Terminaltyp zu kennen, ist es besser, SSH, Container oder die Ausführungsumgebung so zu konfigurieren, dass der TERM-Wert übergeben wird.
unbekannter Terminaltyp
Der terminfo-Eintrag, der dem Wert TERM entspricht, ist möglicherweise nicht auf dem System vorhanden. Überprüfen Sie dies mit infocmp "$TERM" und installieren Sie entweder das erforderliche Terminalinformationspaket oder konfigurieren Sie den Client, um einen kompatiblen Wert zu senden.
Vorherige Ausgaben sind noch sichtbar, selbst nach dem Befehl clear.
Der Terminal-Emulator unterstützt möglicherweise kein Zurücksetzen des Scrollbacks, oder die von Ihnen verwendete clear-Implementierung kann möglicherweise nur den Bildschirm löschen. Dies ist getrennt davon, ob die Befehls-Historie gelöscht wurde.
Häufig gestellte Fragen
Löscht das Ausführen von clear auch die Historie?
Nein. clear ändert die Terminalanzeige, löscht jedoch nicht die Bash-Befehls-Historie. Das Löschen der Historie wird von separaten Funktionen und Einstellungen von history behandelt.
Kann ich clear nur auf den Bildschirm anwenden, während ich den Scrollback behalte?
In ncurses-Implementierungen können Sie clear -x verwenden. Überprüfen Sie, ob die Implementierung Ihres Systems diese Option unterstützt.
Besteht ein Risiko, dass clear Dateien löscht?
Der normale clear-Befehl gibt nur Terminal-Steuersequenzen aus und löscht keine Dateien. Allerdings könnte ein Alias oder eine Funktion mit demselben Namen neu definiert worden sein. Wenn Sie also misstrauisch sind, überprüfen Sie dies mit type -a clear.
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter ncurses offizielles Handbuch: clear(1) und ncurses offizielles Handbuch: tput(1).




