Wie lösche ich den Gnome-Terminalverlauf?

59

Wenn Sie clearBefehl oder Ctrl+ Lim Terminal verwenden, wird das Terminal gelöscht, Sie können jedoch immer noch einen Bildlauf durchführen, um die zuletzt verwendeten Befehle anzuzeigen. Gibt es eine Möglichkeit, das Terminal vollständig zu löschen?

hpn
quelle
Es ist terminalabhängig und keine der Antworten spricht das an.
Thomas Dickey

Antworten:

69

Sie können verwenden tput reset.

Neben resetund tput resetSie können folgende Shell - Skript verwenden.

#!/bin/sh
echo -e \\033c

Dadurch werden Steuerzeichen Esc-Can die Konsole gesendet, die das Terminal zurücksetzt.

Google-Schlüsselwörter: Linux-Konsolensteuerungssequenzen

man console_codes sagt:

Die Sequenz ESC c bewirkt ein Zurücksetzen des Terminals. Dies ist genau das, was Sie möchten, wenn der Bildschirm vollständig verstümmelt ist. Das oft empfohlene "Echo ^ V ^ O" macht nur G0 aktuell, aber es gibt keine Garantie, dass G0 auf Tabelle a) zeigt. In einigen Distributionen gibt es ein Programm-Reset (1), das nur "echo ^ [c" ausführt. Wenn Ihr Terminfo-Eintrag für die Konsole korrekt ist (und einen Eintrag rs1 = \ Ec hat), funktioniert auch "tput reset".

Sachin Divekar
quelle
1
Was ist der Unterschied zwischen Reset und Tput Reset?
Toothrot
tput resetist schneller als resetin Ubuntu 16.04, zumindest
Iván Rodríguez Torres
5
-1, Sie können immer noch den Puffer sehen, wenn Sie nach oben scrollen
João Pimentel Ferreira
15

Sie können den resetBefehl verwenden, mit dem die Terminaleinstellungen zurückgesetzt werden.

Enzotib
quelle
15

Ich weiß, dass Sie sich in einem Gnome-Terminal befinden, aber ich dachte, ich würde mit einem Tipp für andere antworten, die (wie ich) auf einem Mac sein könnten:

Wenn Sie mit Terminal.appoder iTerm.appdann Control+Lnach oben wird so sieht das Terminal leer, aber Cmd+Ktatsächlich das Terminal / clear Scrollback zurückgesetzt.

Wenn Sie in der Lage sind, Tastatureinstellungen für Ihr Terminal festzulegen, können Sie möglicherweise so etwas wie die oben genannten Ctrl+KEingaben zuweisen echo -e \\033c.

cwd
quelle
2
Cmd+Kist alles was ich wollte. ty
Gaurav Gandhi
9

Anthons Antwort funktioniert in der KDE-Konsole, aber nicht in urxvt. In urxvt habe ich ein paar Jahre lang reset verwendet, um das Scrollback zu löschen (zusammen mit all den anderen Dingen, die es macht), und war nicht zufrieden, dass es in Konsole nicht funktionierte. Für Linux habe ich jetzt einen neuen Alias:

alias allclear='clear; echo -e "\033c\e[3J"'

Unter OS X funktioniert es jedoch nicht.

tput reset funktioniert in keinem Kontext AFAICT.

In der KDE-Konsole wird mit ctrl- shift- kder Bildlauf zurückgesetzt (einschließlich der aktuellen Shell-Eingabeaufforderung, sodass diese vollständig leer ist). Im iTerm- oder Apple-Terminal unter OS X wird durch cmd- shift- kauch der Bildlauf zurückgesetzt. Fügen Sie diese Funktion zu ~ / .Xresources hinzu, um urxvt hinzuzufügen:

urxvt*keysym.C-S-K: command:\033c
ecloud
quelle
Diese Antwort ist die Antwort, die jeder, der Linux Bash verwendet, lieben wird, wenn er das gleiche Ergebnis erwartet, das er auf einem Mac durch Drücken von Befehl + K erhalten würde von /etc/bash.bashrc (dann vom Server abmelden, wieder anmelden und es wird über den Befehl allclear funktionieren): allclear(){`echo" Terminal und Scrollback löschen ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }` Bearbeiten: Formatierung funktioniert nicht. Wenn jemand in der Lage ist, dies so zu bearbeiten, dass es lesbar ist, würde ich es begrüßen.
KLaw
3

Ich habe das vor Jahren im Netz gefunden und es funktioniert gut für mich. Das Terminal wird vollständig ohne Scroll-Verlauf gelöscht.

echo -e "\e[3J"
Kanon
quelle
2

Ich stellte fest F12, dass der Bildschirm in jeder der folgenden Shells gelöscht wird : bash , csh und fish shell . Mein Befehl unterscheidet sich von allen vorherigen Befehlen, da er alles beibehält, was Sie bereits in der aktuellen Zeile eingegeben haben.
(Hinweis: Alle unten aufgeführten Konfigurationen sind terminalabhängig, aber ich hoffe, dass sie praktisch überall funktionieren.)

Bash

Öffnen Sie die Datei ~/.inputrcund fügen Sie die folgende Zeile ein:

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

Um die neue Schlüsselbindung verfügbar zu machen, öffnen Sie entweder ein neues Terminal oder geben Sie Ctrl+ und Xdann Ctrl+ ein R, um die .inputrc-Datei im aktuellen Terminal neu zu laden.

Erläuterung
Die Datei ~ / .inputrc steuert die Tastenbelegung des Bash-Terminals.

Über die Linie:

  1. Der erste Teil der Zeile "\e[24~"bildet den Schlüssel ab F12.
  2. Das C-k( Ctrl+ X) löscht den Kill-Ring (Bashs Copy-and-Past-Speicher).
  3. Das Leerzeichen vermeidet einen Piepton beim nächsten Befehl.
  4. Das C-u( Ctrl+ U) sendet die aktuelle Zeile an den Kill-Ring und löscht sie.
  5. Der echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nsendet zwei gruppierte Befehle an das Terminal. Sie werden durch getrennt ;und durch beendet \n.
    • Das echo -ne '\\ec\\e[3J'löscht den Bildschirm.
    • Das history -d $((HISTCMD-1))vermeidet, dass diese beiden Befehle in die Historie eingehen.
  6. Das C-y( Ctrl+ Y) fügt den vom C-uBefehl gespeicherten Kill-Ring ein .
  7. Das C-?( Ctrl+ ?) entspricht dem Backspaceoben in Schritt 3 eingegebenen Leerzeichen und entfernt es.

Verweise:

csh

Geben Sie den folgenden Befehl ein.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Es kann auch in Ihre .cshrcDatei eingefügt werden, um die Schlüsselbindung für jedes neue Terminal zu laden.
(Ja, es ist viel einfacher als in Bash)

Fischmuschel

Geben Sie den folgenden Befehl ein.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Sie können die Funktion bearbeiten und speichern fish_user_key_bindings, um die Tastenbelegung für jedes neue Terminal zu laden.
(Ja, es ist viel einfacher als in Bash)

Akira Cleber Nakandakare
quelle
2

[Ubuntu 16.04]

Die Datei .bash_history wird im Ausgangsverzeichnis des Benutzers erstellt, sobald das Terminal geschlossen wird

Es ist nützlich, aber Sie können es löschen, wenn Sie möchten. Es wird jedoch jedes Mal erstellt, wenn Sie das Terminal nicht mehr verwenden.

Sie können es manuell löschen aus:

  • Ihr Dateibrowser.

  • Terminal: Denken Sie daran, dass beim Schließen des Terminals eine neue .bash_history-Datei erstellt wird (basierend auf der Standardkonfiguration).

Oder Sie können eine benutzerdefinierte Funktion aufrufen, wenn Sie die benötigte Funktionalität in einer vom bashrc verknüpften Datei speichern. Sie können den bashrc selbst bearbeiten, wenn Sie Ihren Code dort ablegen möchten. Die nächsten Beispiele befinden sich jedoch in einer separaten Datei

Ehrlich gesagt ist dies für mich nicht nützlich, aber wenn Sie den

Befehlsverlauf vor dem Beenden löschen möchten, können Sie dies tun: .bash_custom #dies ist meine benutzerdefinierte Datei

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

Dann füge unten den Namen und den Pfad meiner Datei hinzu
.bashrc # das ist die Konfigurationsdatei für die Bash (glaube ich)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

und das ist alles.

ABER, um genau das zu tun, was Sie wollen , brauchen Sie nur diese Funktion in Ihrer benutzerdefinierten Datei und verlinken Sie sie:

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

Oder setzen Sie die Funktion einfach in die .bashrc, wenn Sie möchten, aber auf diese Weise benötigen Sie wahrscheinlich eine export-Anweisung nach der Funktion. Ich bin nicht sicher, und wenn die Datei aktualisiert wird, gehen wahrscheinlich Ihre Funktionen verloren. Ich bin mir auch nicht sicher: D.
Denken Sie daran, dass Sie das Terminal neu starten müssen, wenn Sie die .bashrc-Datei oder Ihre benutzerdefinierte Datei bearbeiten.

Federico Gallo
quelle
1

Bei Verwendung von PuTTY unter CentOS 7 lässt clear nur den Befehl clear im Scrollback. Wenn Sie jedoch "clear && clear" ausführen, werden zwei Instanzen des Befehls clear gleichzeitig ausgeführt, der Scrollback wird vollständig gelöscht, und ich habe keine Bildlaufleiste. Versuch das. Es ist eine seltsame Lösung, aber keine davon hat den Scrollback so effektiv gelöscht, und das tut es auch.

Zoltan Shapiro
quelle
0

Hinzugefügt, ~/.inputrcum die vollständige Verrechnung zu binden an F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'
Velkan
quelle
0

In Fedora 30 wird der Verlauf gelöscht, indem die Datei $ HOME / .bash_history entfernt wird. Der einfachste Weg, die Terminal-Verlaufsdatei über die Tastatur zu löschen, ist:

  • Drücken Sie Alt+ F4, um jedes GNOME-Terminal-Fenster zu schließen, und blättern Sie bei Bedarf über Alt+ Taboder Alt+ Shift+ durch die Fenster Tab. (Alle Terminalfenster müssen geschlossen sein, da die Datei .bash_history beim Schließen erstellt oder aktualisiert wird.)
  • Drücken Sie Alt+ F2.
  • Geben Sie Folgendes ein nautilusund drücken Sie die EnterTaste, um die Anwendung (GNOME) Files (die früher als Nautilus bekannt war) zu öffnen.
  • Drücken Sie ggf. Ctrl+ H, um versteckte Dateien anzuzeigen.
  • Typ .bash_history(der in der Suchleiste angezeigt werden soll, wenn er unmittelbar nach dem Öffnen des Fensters eingegeben wird. Andernfalls kann über Ctrl+ auf die Suchleiste zugegriffen werden. L)
  • Drücken Sie die Abwärtspfeiltaste, um die Datei auszuwählen, die das einzige Suchergebnis sein soll.
  • Drücken Sie Shift+ Delete, um die Datei dauerhaft zu löschen. (Wenn Sie Deletestattdessen den nicht geänderten Schlüssel verwenden, ist die Datei ".bash_history" weiterhin über den Ordner "Trash" zugänglich.)
Patrick Dark
quelle
-2
cat /dev/null > ~/.bash_history && history -c && exit
Bash
quelle
Das Mindeste, was Sie tun können, ist, Ihre Antwort zu erklären und zu formatieren.
Paradox
(1) Es ist nicht klar, ob das OP den Speicher (Verlauf) der Shell früherer Befehle löschen möchte (die Frage bezieht sich auf das Terminal ). Sie können es nicht sehen, es wurde jedoch history -cin zwei vorherigen Antworten vorgestellt, und sie wurden gelöscht, weil sie nicht die richtigen Antworten auf die Frage sind. (2) Während das Terminalfenster schließen wird (wahrscheinlich) die Erinnerung an früheren Befehle des Terminals löschen, ist es weit von sich , dass die OP das tun will. … Und PS: Es kann exitnicht garantiert werden, dass ein einzelner Befehl das Terminalfenster schließt.
G-Man