Mehr als einmal habe ich versehentlich eine Reihe von Befehlen ausgeführt und meine Bash-Historie verschmutzt. Wie schließe ich mein Terminal, ohne meinen Bash-Verlauf zu speichern? Ich benutze Fedora.
Mehr als einmal habe ich versehentlich eine Reihe von Befehlen ausgeführt und meine Bash-Historie verschmutzt. Wie schließe ich mein Terminal, ohne meinen Bash-Verlauf zu speichern? Ich benutze Fedora.
Antworten:
Der Verlauf Ihrer Shell wird in der durch die HISTFILE
Variable angegebenen Datei gespeichert . So:
unset HISTFILE
Dies gilt auch für zsh, jedoch nicht für ksh, das weiterhin in der Datei gespeichert wird, die beim $HISTFILE
Starten der Shell angegeben wird (und Sie entscheiden sich umgekehrt, den Verlauf in ksh zu speichern, sobald Sie die Shell gestartet haben).
Kurze Antwort:
Geben Sie dies an der Eingabeaufforderung ein:
$ kill -9 $$
Dies wird Ihre Shell sofort , ohne die Schale der Lage zu töten ist zu tun etwas wie Falle das Signal, speichern Geschichte, führen ~/.bash_logout
, warnen gestoppt Arbeitsplätze oder jede dieser guten Sachen.
Lange Antwort:
Hinweis: Diese Optionen schließen sich nicht gegenseitig aus. Sie können alle gleichzeitig verwendet werden.
Option 1:
Wenn Sie ein Perfektionist sind, wenn es darum geht, Ihre Verlaufsdatei HISTIGNORE
zu überfrachten, können Sie die Variable so ändern , dass sie eine Reihe von Befehlen enthält, die nicht aufgezeichnet werden sollen. Zum Beispiel, wenn Sie hinzufügen , HISTIGNORE='ls*:cd*'
um Ihre ~/.bashrc
dann jeder Instanz ls
und cd
nicht eingefügt in der History - Datei.
Option 2:
Wenn Sie befehlsbezogen steuern möchten, welche Befehle in Ihrem Verlauf nicht berücksichtigt werden, können Sie festlegen HISTCONTROL='ignorespace'
, dass keine Befehlszeilen mit einem Leerzeichen beginnen. Bei Verwendung von ignoreboth
werden auch wiederholte Zeilen weggelassen. Wenn Sie dann die Leertaste drücken, bevor Sie einen Befehl eingeben, wird dieser nicht in Ihrer Verlaufsdatei angezeigt.
Option 3:
Wenn Sie nur möchten, dass die Shell beim Schließen des Terminals sofort beendet wird, können Sie trap
das Signal, das das Terminalprogramm an die Shell sendet ( xterm
z. B. sendet SIGHUP
und wartet, bis die Shell beendet wird), und den Vorgang beenden, ohne den Verlauf zu speichern empfängt dieses Signal. Fügen Sie dies zu Ihrem hinzu ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
für irgendetwas zu werben, außer in schlimmen Situationen, in denen alles andere fehlgeschlagen ist.
Ich bin überrascht zu sehen, dass niemand history -c
unmittelbar zuvor einen Vorschlag gemacht hat exit
. IINM (ich bin kein Experte), das wird gut tun.
history -r
Die Verlaufsdatei wird erneut gelesen, sodass das Speichern zu einem No-Op wird.
Es gibt zwei Umgebungsvariablen, die bash verwendet, um die Verlaufsdatei und die Anzahl der Zeilen zu bestimmen, in die beim Beenden der Shell geschrieben werden soll.
Sie können den Verlauf Ihrer Sitzung mit einem der folgenden Elemente verwerfen (festgelegt während der Sitzung, die Sie aus Ihrer Verlaufsdatei ausschließen möchten):
HISTFILE=/dev/null
oder
HISTSIZE=0
Beides funktioniert in Bash on Fedora einwandfrei
Ich bin mir nicht sicher, warum dir deine Befehlsgeschichte so wichtig ist. Wenn Sie bestimmte Befehle häufig benötigen, macht es möglicherweise mehr Spaß, wenn Sie Aliase für sie definieren, damit Sie sie mit zwei Tastenanschlägen zurückholen können, anstatt im Verlauf nach ihnen suchen zu müssen.
Eli hat dir schon die richtige Antwort für Bash gegeben, die gesetzt werden soll HISTSIZE=0
.
Ich würde nur die Methode hinzufügen, um es für GNU-Bildschirm zu tun . Drücken Sie Ctrl+A
(Bildschirm-Escape-Sequenz) gefolgt von :scrollback 0
. Dadurch wird der Scroll-Back-Verlauf gelöscht. Jetzt können Sie sofort die :scrollback 15000
Größe des Scrollback-Puffers zurücksetzen.
screen(1)
?
scrollback=0
.
Ctrl+a H
noch Ctrl+a :clear
wird die Geschichte entfernen. Du brauchst Ctrl+a :scrollback 0
. Sie können es selbst testen. Starten Sie eine neue Bildschirmsitzung. Jetzt mache a cat /etc/passwd
. Führen Sie nun einen der oben genannten Schritte aus - Ctrl+a H
oder Ctrl+a :clear
. Versuchen Sie nun, aus dem Bildschirmpuffer zu kopieren, indem Sie einen Ctrl+a [
Pfeil nach oben und anschließend einen Pfeil nach oben drücken , um zu sehen, wie weit Sie zum Kopieren gehen können. Wenn Sie ein Ctrl+a :scrollback
gefolgt von einem getan haben clear
, würden Sie nur so weit gehen, wie Sie im aktuellen Fenster sehen können, da es keinen Scrollback-Puffer gibt.
set HISTFILE
nächste Mal, wenn ich mich anmelde? (Sagen Sie einfach, ob dies richtig oder falsch ist)