Es gibt unterschiedliche Arten und Weisen in einer Konsole den Bildschirm zu leeren oder zu löschen. Hier sind die gängigen Methoden und die feinen Unterschiede.
Strg+L (Tastenkombination)
Strg+l
Dies ist die schnellste und am häufigsten verwendete Methode. Die Wirkung entspricht im Wesentlichen dem Befehl clear: Der Bildschirm wird nach oben gescrollt, um Platz für neue Eingaben zu schaffen.
Der entscheidende Punkt ist, dass der vorherige Inhalt nicht gelöscht wird - du kannst mit der Maus oder PageUp nach oben scrollen, um die zuvor ausgegebenen Befehle und Ergebnisse weiterhin anzuzeigen.
clear (Befehl)
clear
Dies ist der Standardbefehl zum Leeren des Bildschirms. In vielen Terminal-Emulatoren ist die Wirkung mit Strg+L identisch, und der Verlauf kann weiterhin angezeigt werden. Es gibt jedoch kleine Unterschiede: Einige Terminal-Emulatoren (KDE) löschen beim Ausführen von clear auch den Scrollback-Puffer, sodass du nicht mehr nach oben scrollen kannst.
Warum ist das so?
Moderne clear Versionen, ab 2013 aus dem Paket ncurses, senden eine spezielle Escape-Sequenz (\033[3J), die von der Konsole als „auch den Scrollback-Puffer löschen" interpretiert wird. \033[2J löscht nur den Bildschirm. Mit einem vorangehendem \033[H wird der Cursor in die oberste Zeile platziert.
echo -e "\033[H\033[2J"
Doppeltes clear
clear && clear
Liegt der klassische clear Befehl vor, der den Puffer nicht löscht, dann kannst du den Puffer trotzdem löschen, wenn du direkt danach nochmal den clear Befehl aufrufst. Zum Beispiel clear && clear.
Dennoch ist dies schneller als reset und für den täglichen Gebrauch ausreichend.
reset (Befehl)
reset
Dies ist eine „gründliche" Reparaturmaßnahme. Es löscht nicht nur den Bildschirm, sondern setzt den internen Zustand des Terminals vollständig zurück. Wenn dein Terminal „verrücktspielt" (z. B. Zeichen an falschen Positionen erscheinen, die Eingabetaste nicht in eine neue Zeile springt oder die Schriftfarbe durcheinander ist), korrigiert reset diese Probleme. Da das Terminal neu initialisiert werden muss, ist die Ausführung langsamer als bei den beiden anderen Methoden.
Hinweis: Die Ausführung von reset kann dazu führen, dass du nicht mehr nach oben scrollen kannst, um den vorherigen Verlauf anzuzeigen.
tput(Befehle)
Was ist tput
tput ist ein Werkzeug mit Parametern und sogenannten Capability Codes zur Steuerung von Terminal-Fähigkeiten.
Parameter
-T: Gibt den Terminaltyp an und überschreibt die UmgebungsvariableTERM. In den meisten Fällen ist dies nicht erforderlich.-S: Ermöglicht die Eingabe mehrerer Capability Codes über die Standardeingabe (einer pro Zeile), was für die Stapelverarbeitung geeignet ist.-x: Eine Option der ncurses-Version, die speziell verhindert, dasstput clearden Scrollback-Puffer löscht (relevant für dein vorheriges Problem).
Capability Modes
Die Capability Modes oder Fähigkeitscodes sind keine Befehlszeilenoptionen im eigentlichen Sinne, sondern die an tput übergebenen „Parameter", z. B. tput clear, tput cup 10 10, tput bold mit denen Eigenschaften auf dem Bildschirm wie z.B. Schriftfarbe oder Hintergrund verändert werden können. Eine vollständige Liste findest du in der Manpage von terminfo(5).
Die offizielle Referenz ist die Manpage
terminfo(5)-man 5 terminfo.
- Bildschirm & Cursor:
clear,cup,home,civis,cnorm,sc,rc,cols,lines - Textattribute:
bold,dim,smul,rmul,rev,blink,sgr0 - Farben (ANSI):
setaf,setab - Löschen & Einfügen:
el,el1,ed,ech,ich,il,dch,dl
Das ist nur ein Ausschnitt. Eine vollständige Liste aller Terminfo-Capability-Codes befindet sich in der Terminfo-Datenbank, die hunderte von Fähigkeiten (boolesche, numerische und String-Capabilities) definiert, die zudem je nach Terminaltyp und Implementierung variieren.
Die Terminfo-Datenbank ist eine Datei, die in lesbarer Form (
*.src) und inkompilierterForm (*.tic) in den Verzeichnissen/usr/share/terminfo/oder/lib/terminfo/vorliegt. Jedes Terminal hat dort eine eigene Datei z.B./usr/share/terminfo/v/vt100). Das Terminal ruft die entsprechende Funktion auf und das darunter liegende ncurses schaut dann in dieser compilierten Datei nach, welche Escape Sequenzen dafür passen.
tput clear
tput clear
tput clear: Funktional äquivalent zum Standardbefehl clear, leert den Bildschirm, der Verlauf bleibt in der Regel erhalten.
tput reset
tput reset
tput reset funktioniert ähnlich wie reset (setzt den Terminalzustand zurück), aber mit einem kleinen Unterschied:
Der Standardbefehl reset (ohne tput) enthält eine Verzögerung von etwa 1 Sekunde zur Kompatibilität mit alten Terminals, während tput reset diese Verzögerung nicht hat und schneller reagiert.
Escape-Sequenzen
echo -e "\033c"
printf "\033c"
echo -e "\033c" oder printf "\033c": Dies ist eine fest codierte Escape-Sequenz, deren Effekt dem harten Reset eines Terminals entspricht (ähnlich tput reset). Da tput die Terminfo-Datenbank nachschlägt, in der dies fest codiert ist, kann es sein, dass es in exotischen Terminals eventuell nicht funktioniert.
stty sane (Rettung bei fehlerhafter Anzeige)
stty sane
Manchmal ist das Terminal nicht „schmutzig", sondern der Modus wurde verstellt (z. B. nach versehentlichem cat einer Binärdatei, sodass die Eingabetaste nicht mehr funktioniert oder Zeichen nicht angezeigt werden).
Dieser Befehl leert nicht den Bildschirm, sondern setzt die Terminal-Einstellungen (wie Zeilenumbruch, Echo-Modus) auf ein „normales" Standardverhalten zurück. Wenn dein Terminal „verrücktspielt" und reset zu langsam ist, kannst du zuerst stty sane versuchen, um die grundlegende Eingabe- und Anzeigelogik wiederherzustellen.
setterm -reset
setterm -reset
Dies ist ein weiteres Werkzeug zur Terminal-Steuerung, dessen Reset-Funktion tput reset ähnelt. Der Vorteil liegt darin, dass die Optionsnamen intuitiver sind (z. B. -reset), aber es ist ein Linux-spezifisches Werkzeug und keine POSIX-Standardisierung, weshalb es auf Nicht-Linux-Systemen (wie BSD, macOS) normalerweise nicht verfügbar ist. Es ist ein util-linux-Paket: setterm.