Wie lösche ich das Terminal wirklich?

385

Ich kann den clearBefehl ausgeben oder Ctrl+ drücken L, um das aktuelle Ubuntu-Terminal zu löschen, aber dies verschiebt nur die vorherige Ausgabe nach oben. Wenn Sie mit der Maus oder den Tasten PgUPund scrollen, ist PgDownes schwierig zu unterscheiden, wo die Ausgabe des vorherigen Befehls endet und die Ausgabe des aktuellen Befehls beginnt.

Gibt es eine Möglichkeit , das Terminal wirklich zu löschen, damit die vorherigen Befehlsergebnisse nicht angezeigt werden?

Stann
quelle
11
Drücken Sie zweimal Strg + L und Sie werden leer!
Pandya

Antworten:

456

Ja, der gesuchte Befehl lautet

reset

Im Gegensatz zu clearoder Ctrl+ L, resetdas tatsächlich vollständig neu initialisieren Terminal , anstatt nur auf den Bildschirm zu löschen. Die Shell wird jedoch nicht erneut instanziiert (Bash). Dies bedeutet, dass der Bash- Status derselbe ist wie zuvor, als ob Sie lediglich den Bildschirm geleert hätten.

Wie @Wallacoloo in den Kommentaren erwähnt, sollte dieser Befehl das Gleiche schneller ausführen:

tput reset

Aus den anderen Antworten:

  • Sie können einen Satz Tastenkombination auf resetdem Terminal, wie durch erklärt towolf .

  • Wenn Sie Kubuntu ausführen und Ihr Terminal Konsole ist, müssen Sie zu Bearbeiten → Verlauf löschen gehen , da resetdies nicht so funktioniert, wie es UncleZeiv feststellt .

Stefano Palazzo
quelle
9
Wahrscheinlich ist das für die meisten Benutzer egal, aber das Verhalten von resethängt vom Terminal ab.
cthom06
2
Persönlich macht es mir nichts aus, dass etwas "oben" auf dem Scroller bleibt, wenn ich auf ihn treffe ^L. Ich sehe es nicht (das ist , was ich will!), Ich es nicht fühlen, und wenn plötzlich würde ich brauche wieder herzustellen , was es war - kein Problem. resetIm Gegensatz dazu ist es ein viel schwierigeres Werkzeug - ich benutze es, wenn etwas mit dem Terminal schief gelaufen ist - wie zum Beispiel, wenn seltsame Escape-Sequenzen versehentlich das Display komplett ruiniert haben.
ulidtko
14
@ulidtko: Es spielt keine Rolle, wenn Sie aufeinanderfolgende Sitzungen von Programmen mit Tonnen von Ausgabe ausführen. Wenn Sie zurückblättern, kann es leicht zu Unklarheiten darüber kommen, welche Ausführung etwas gedruckt hat. Ich weiß genau, dass in diesen Fällen ausgefeiltere Lösungen verwendet werden können, aber es handelt sich dennoch um ein Szenario, das in schnellen und unsauberen Debugsitzungen häufig auftritt.
UncleZeiv
7
Es gibt auch tput resetwelche, die sichtbar dasselbe tun, aber sofort fertig sind (wobei resetes bis zu 2 Sekunden dauern kann, bis die Eingabeaufforderung wieder angezeigt wird).
Ponkadoodle
1
Dadurch ändert sich die Größe meines putty.exe-Fensters. Es wäre schön, dies zu löschen, ohne dass dies passiert.
void.pointer
100

Ich habe eine Weile danach gesucht und ein Genie gefunden, das dies gepostet hat:

clear && printf '\e[3J'

Löscht den gesamten Bildschirmpuffer, sehr sauber. Funktioniert unter OS X und funktioniert meiner Meinung nach auf den meisten * nix-Terminals einwandfrei.

Für Neugierige ist dieser Teil '\e[3J'ein Terminal-Escape-Befehl.

Goran
quelle
2
Hmm, funktioniert in xterm, Konsole und Linux VT, aber nicht in gnome-terminal ...
Ruslan
1
Danke, funktioniert hervorragend auf meinem Mac - ich habe einen echten Bash-Stil wirklich vermisst reset.
JohnnyCoder
9
Danke, das ist super nützlich! Was printf '\e[3J'bedeutet Wie reinigt es den Puffer?
Filip Spiridonov
4
Seien resetSie vorsichtig beim Aliasing - es kann mehr als nur das Terminal löschen. Wenn Sie beispielsweise versehentlich eine Binärdatei mit zufälligem Datenmüll drucken, der das Terminal beschädigt (z. B. das Echo von eingegebenen Zeichen deaktivieren), resetkann dies in der Regel behoben werden. Natürlich ist Aliasing in Ordnung, solange Sie wissen, wie \overrideein Alias-Shadowed-Befehl ausgeführt wird.
RubyTuesdayDONO
4
Dies ist die einzige Antwort, die zum Löschen des Putty-Scrollbacks beim Zugriff auf SSH über Wickler funktioniert.
Dhaupin
45

Sie können im Gnome-Terminal auch eine Verknüpfung zuweisen, indem Sie auf Bearbeiten → Tastaturkürzel klicken . Ich benutze Shift+ Ctrl+ Alt+ C.

zurücksetzen und Verknüpfung löschen

Towolf
quelle
+1. Ich habe immer die Menüleiste versteckt; Selbst nach Jahren, in denen ich Gnome verwendet habe, hätte ich nie daran gedacht, danach zu suchen. Danke :-)
Stefano Palazzo
3
"Zurücksetzen" macht nichts für mich und "Zurücksetzen und Löschen" löscht alles, zeigt aber die Eingabeaufforderung nicht erneut an. Keiner dieser Menüeinträge verhält sich wie der Befehl "Zurücksetzen" von einem Terminal aus.
Hibou57
Wie @ Hibou57 sagte, scheint meine Tastenkombination für "Zurücksetzen" nichts zu tun. Ist diese Funktionalität in 14.04 defekt?
Michael Martin-Smucker
"Ist diese Funktionalität in 14.04 kaputt?": Dies ist dasselbe mit 12.04.
Hibou57
1
@ Hibou57 "Zurücksetzen und Löschen" wird die Eingabeaufforderung voraussichtlich nicht erneut anzeigen. Wenn Sie anschließend die Eingabetaste drücken, wird die Eingabeaufforderung erneut angezeigt. Funktioniert das für dich?
Don Hatch
19

Cross-Posting meiner Antwort von Stackoverflow .

Verwenden Sie den folgenden Befehl, um einen übersichtlichen Bildschirm zu erstellen, anstatt nur neue Zeilen hinzuzufügen ...

printf "\033c"

Ja, das ist ein 'printf' an der Bash-Eingabeaufforderung.

Sie werden aber wahrscheinlich einen Alias ​​definieren wollen ...

alias cls='printf "\033c"'

Erläuterung

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

Dies <ESC>cist also der VT100-Escape-Code zum Zurücksetzen des Terminals. Hier finden Sie weitere Informationen zu Terminal-Escape-Codes.

Bearbeiten

Hier sind ein paar andere Möglichkeiten, dies zu tun ...

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 (genannt Konsole), aber es gibt Hoffnung! Verwenden Sie die folgende Befehlssequenz, um den Bildschirm und den Bildlaufpuffer zu löschen ...

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

Oder verwenden Sie den folgenden Alias ​​für KDE ...

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

Von hier aus habe ich den Befehl zum Zurückblättern erhalten .

Autodidakt
quelle
18

Führen Sie diesen Befehl aus:

reset

Dies hat den gleichen Effekt wie das Starten eines neuen Terminals.

dv3500ea
quelle
6
Wenn resetich Putty benutze, kann ich nach dem Laufen immer noch nach oben scrollen und die vorherigen Sachen sehen. Ist dies eher ein Problem mit PuTTY als reset?
7.
@svish - das ist nur ein Problem oder eine Entscheidung bei der Umsetzung von Kitt.
Belacqua
@jgbelacqua, Deal :)
Svish
Arbeitete mit MAC OS Terminal
Bira
2
@Bira Nein, resetScrollback wird unter MacOS 10.14 Mojave nicht gelöscht . Sie könnten versuchen seq 100; reset, noch dort Scrollback zu sehen. Cmd+KKann auf dem macOS-Terminal den Bildschirm löschen und einen Bildlauf durchführen.
Johnny Wong
8

Mein Favorit ist printf "\ec". Dies kann auch printf "\033c"oder sein printf "\x1bc". Das ist eine ansi-Escape-Sequenz, die auf wundersame Weise den Bildschirm und den Puffer für die Terminal-Ausgabe löscht (für die meisten Standard-Terminals, in denen ich gearbeitet habe, scheint es - ich weiß, dass es auf Ubuntu-ähnlichen Geräten wie gnome-terminal, terminator, xterm usw. funktioniert Linuxes)

Ich weiß, dass dies unter Linux Mint und Ubuntu 14.04 funktioniert, daher weiß ich nicht, warum Leute Dinge wie anhängen und vorbereiten clear && echo -ne "\033c. printf "\ec"hat immer für mich gearbeitet.

Zusätzlich habe .bashrcich in meinem eine Bindung wie diese:

bind -x '"\C-t": printf "\ec"';

Jetzt drücke ich die ctrltganze Zeit.

dylnmc
quelle
Wissen Sie, wie ein Mapping mit der Windows-Taste erstellt werden kann? Dieses Snippet ist wirklich großartig und funktioniert genauso wie Command-K auf einem Mac. Danke.
Niloct
Mit @Niloct können Sie sehen, ob das Terminal dies unterstützt xev(geben Sie einfach xevein Terminal in einer x-session ein). Soweit ich weiß, unterstützt urxvt das nicht. Ich habe es zwar nicht in einem tty versucht, bin aber zuversichtlich, dass es nicht unterstützt wird. Ich bezweifle auch, dass xterm oder gnome-terminal dies unterstützen würden. Es ist knifflig mit Ansi-Fluchten. Prost und Entschuldigung für die verspätete Antwort.
dylnmc
Alles klar @dylnmc, ich weiß das zu schätzen. Danke für den Kommentar.
Niloct
5

Nun, es kommt wirklich darauf an, ob Sie Konsolebeispielsweise resetnicht verhindern, dass Sie über die erste Zeile hinausblättern. In diesem Fall müssen Sie einige Funktionen des verwendeten Terminals verwenden. Für Konsoleist es Edit > Clear History.

Onkel Zeiv
quelle
3

Ich habe festgestellt, dass das Folgende mit Kubuntu ziemlich erfolgreich ist:

alias clc="echo -en '\033c\033[3J'"

Sie können clsdamit die Windows-Tradition beibehalten clc, die Matlab-Version verwenden oder eine eigene. Viel Glück!

Charles Bell
quelle
2

Eine weitere Alternative zur @ Hibou57-Antwort:

# The Octal Way
alias clear="echo -e '\033c\c'"

ODER

# The Hex Way
alias clear="echo -e '\x1b\c'"

Grundsätzlich hat dies genau den gleichen Effekt, es wird das ^[Zeichen gedruckt (das Ihr Terminal löscht) und die nachfolgende neue Zeile nicht ausgegeben.

TwystO
quelle
Leichte Korrektur: es druckt die ^[Zeichen (ESC) , gefolgt von dem cZeichen, nicht nur den ^[Charakter allein. Zusammen ergeben diese den Klemmencode "RIS", der einen Reset bewirkt. Weitere Informationen: xfree86.org/4.8.0/ctlseqs.html
jwd