452 Stimmen

Einen Terminalbildschirm für real löschen

Die Verwendung des clear auf dem Terminal gaukelt dem Benutzer nur vor, dass der Bildschirm geleert wurde... Sie können immer noch die Ausgabe der vorherigen Befehle sehen, wenn Sie mit der Maus scrollen. Das macht das Leben schwer, wenn man in einem Tsunami von Text ertrinkt.

Verschiedene Lösungen (Escape-Code usw.), die im Internet zu finden sind, sind nur Variationen dessen, was der Befehl clear bereits tut.

Wie kann man also den Inhalt eines Terminals unter Linux wirklich löschen?

46 Stimmen

Ich würde dies als "Softwaretools, die von Programmierern üblicherweise verwendet werden" einstufen (in den FAQ als gültig erwähnt).

5 Stimmen

Was Sie wirklich fragen, ist: "Wie kann ich den Rücklaufpuffer des Terminals löschen?", und das ist unabhängig von der Shell (Bash) oder Ubuntu.

0 Stimmen

@spiderplant0 wahrscheinlich, weil AskUbuntu der richtige Ort dafür ist - zu diesem Zeitpunkt. Gab es noch nicht, als diese Frage gestellt wurde, also wurde sie als "off topic" geschlossen, obwohl das nicht der Fall ist.

564voto

Autodidact Punkte 27160

Verwenden Sie den folgenden Befehl, um den Bildschirm zu löschen, anstatt nur neue Zeilen hinzuzufügen ...

printf "\033c"

ja, das ist ein 'printf' am Bash-Prompt.

Wahrscheinlich werden Sie aber einen Alias definieren wollen...

alias cls='printf "\033c"'

Erläuterung

\033 == \x1B == 27 == ESC

Daraus wird also <ESC>c das ist der VT100-Escape-Code zum Zurücksetzen des Terminals. Hier finden Sie weitere Informationen über Terminal-Escape-Codes.

bearbeiten

Hier sind ein paar andere Möglichkeiten, wie man es machen kann...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

Das obige funktioniert nicht auf der KDE-Konsole (Konsole genannt), aber es gibt Hoffnung! Verwenden Sie die folgende Befehlssequenz, um den Bildschirm und den Rücklaufpuffer zu löschen...

clear && echo -en "\e[3J"

Oder verwenden Sie vielleicht den folgenden Alias unter KDE...

alias cls='clear && echo -en "\e[3J"'

Ich habe den Befehl zum Zurückblättern von aquí .

4 Stimmen

Dies ist eigentlich terminal-spezifisch. "\033c" es ESC c was die VT-XXX-Escape-Sequenz für "Full Reset (RIS)" ist. Fast alle Terminals, die heutzutage verwendet werden, sind VT-kompatibel, aber wenn Sie jemals ein seltsames Terminal verwenden, könnte dies nicht funktionieren. Die Antwort von @vpit3833 wird wahrscheinlich eher funktionieren, wenn TERM richtig eingestellt ist.

2 Stimmen

printf ist ein Bash-Builtin (es stimmt, dass es auch ein separates Binary ist, aber Builtins haben Vorrang und die meisten modernen Shells haben printf ).

0 Stimmen

@SDX2000 Wird dadurch der Bildlaufpuffer gelöscht? War das nicht eine Anforderung? BTW, wenn dies ist, um die Ausgabe eines Chat-Programms zu überwachen, ist mein Lieblingsweg zu tun, dass zu laufen (oder tail) in emacs, dann habe ich eine Bindung, die markiert und tötet den gesamten Puffer erstellt.

238voto

vpit3833 Punkte 7653

Versuchen Sie reset . Der Bildschirm des Terminals wird gelöscht, aber die vorherigen Befehle können über die Pfeiltasten oder eine beliebige Tastenkombination aufgerufen werden.

3 Stimmen

Danke! Aber es löscht alles, auch die Eingabeaufforderung. In meiner Antwort finden Sie eine Lösung, bei der das nicht der Fall ist.

5 Stimmen

@SDX2000 Beide löschen die Eingabeaufforderung, und die Shell generiert dann eine neue. Der einzige Nachteil von reset ist, dass es etwas langsamer zu sein scheint (wahrscheinlich, weil es mehr tut als nur ESC c auszusenden), aber es ist portabler.

0 Stimmen

@Laurence, danke für die Aufklärung... Ich habe versucht, das System zurückzusetzen, aber es war so langsam, dass ich annahm, die Eingabeaufforderung sei zusammen mit allem anderen gelöscht worden. Ich bevorzuge immer noch die Verwendung von ESC c da ich wahrscheinlich nie ein anderes Terminal als das von Ubuntu verwendete verwenden werde. Obwohl reset kann sich eines Tages als nützlich erweisen, wenn ich einen entfernten Rechner über die serielle Schnittstelle debuggen will.

82voto

tput reset

Das wird schon klappen!

4 Stimmen

Führt viel schneller aus als einfache reset aber trotzdem erfüllt er seinen Zweck!

2 Stimmen

Schneller als nur reset

4 Stimmen

Erläuterung, warum es schneller geht: Warum ist die reset Befehl eine Verzögerung enthalten?

10voto

TecBrat Punkte 3429

Keine der Antworten, die ich las, funktionierte in PuTTY, also fand ich einen Kommentar auf dieser Artikel :

In den Einstellungen Ihrer Verbindung finden Sie unter "Window->Behavior" die Einstellung "System Menu Appears on ALT alone". Dann CTRL + L , ALT , l (das ist ein kleingeschriebenes L) blättert den Bildschirm durch und löscht den Puffer für das Zurückblättern.

(relevant für den OP, da ich eine Verbindung zu einem Ubuntu-Server herstelle, aber anscheinend auch relevant, egal was auf Ihrem Server läuft).

1 Stimmen

Ein 3 Jahre alter Kommentar von @Dennis Williamson führte mich zu dieser Antwort.

0 Stimmen

Wenn Sie in den "Fenster"-Einstellungen von PuTTY die Option "Systemmenü erscheint bei ALT-Leertaste" aktiviert haben, können Sie auch schnell Folgendes tun CTRL+L dann ALT+Space , U der zuerst das Terminalfenster löscht und dann den Bildlauf zurücksetzt.

8voto

Mir Rahed Uddin Punkte 988
  1. Reinigen Sie den sichtbaren Bildschirm

     clear 
  2. Bildschirm reinigen und Puffer leeren

     clear && clear 
  3. Sauber und 1 Sekunde Verzögerung

     reset
  4. Reinigen ohne 1-Sekunden-Verzögerung

     tput reset

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X