Wenn ich Befehle wie ausführe, möchte rm -rf XYZ
ich manchmal nicht, dass dies im Bash-Verlauf aufgezeichnet wird, da ich möglicherweise versehentlich denselben Befehl von erneut ausführen kann reverse-i-search
. Gibt es eine gute Möglichkeit, dies zu verhindern?
93
bash
kann zum Schreiben von Shell - Skripten (daher der Programmierung), das verwendet werden , insbesondere Aspekt davon hat absolut nichts zu tun mit der Programmierung (Geschichte ist eine interaktive-only Sache). Abstimmung zum Schließen.Antworten:
Wenn Sie die
HISTCONTROL
Umgebungsvariable aufignoreboth
(normalerweise standardmäßig festgelegt) festgelegt haben, werden Befehle mit einem führenden Leerzeichen nicht im Verlauf gespeichert (sowie keine Duplikate).Beispielsweise:
Folgendes
man bash
sagt:Siehe auch:
quelle
Geben Sie in Ihr .bashrc / .bash_profile / ein, wo immer Sie möchten
export HISTIGNORE=' *'
. Beginnen Sie dann einfach einen Befehl, den Sie ignorieren möchten, mit einem Leerzeichen.quelle
HISTCONTROL
Umgebungsvariablen ab, die nicht unbedingtignorespace
festgelegt wurde.HISTCONTROL
enthältignorespace
, ist es eigentlich nur redundant, `*` in aufzunehmenHISTIGNORE
. Die beiden arbeiten unabhängig voneinander.Noch besser nutzen
HISTIGNORE
. Auf diese Weise können Sie eine Reihe von Mustern angeben, die ignoriert werden sollen (z. B.rm
). Es ist besser (denke ich), als nur die ganze Geschichte anzusprechen/dev/null
.quelle
Ich weiß, dass dies nicht so gut ist wie die vorherigen Antworten, aber dies wird die aktuelle Bash-Shell töten, ohne etwas zu speichern. Dies ist nützlich, wenn HISTCONTROL nicht standardmäßig eingestellt ist, Sie es vergessen haben oder schlicht und einfach vergessen haben, ein führendes Leerzeichen einzufügen und Sie haben gerade einige Passwörter eingegeben und möchten nicht, dass sie dauerhaft im Verlauf bleiben.
Dies ist der schnelle Weg, und so etwas wie das Löschen der Verlaufsdatei ist nicht so gut, da Sie dies außerhalb einer Verlaufsspeicher-Shell tun müssen (melden Sie sich als anderer Benutzer an und verwenden Sie su / sudo, erstellen Sie einen Hintergrundjob usw.)
quelle
Sie können eines von zwei Dingen tun:
Oder beginnen Sie den Befehl mit einem Leerzeichen.
quelle
ignorespace
standardmäßig festgelegt.HISTFILE
diese Einstellung wird das Speichern eines Verlaufs verhindert und der Befehl wird nicht zum speicherinternen Verlauf hinzugefügt.Oder
(ähnlich der vorherigen Antwort nur kürzer: export HISTFILE = / dev / null)
quelle
Beim Shell-Start bereinige ich explizit den Verlauf von den Einträgen, die ich nicht dort haben möchte. Zum Beispiel möchte ich keine
rm -rf
in der Geschichte (es ist ein Trauma, nachdem ein Verzeichnis voller Ergebnisse entfernt wurde, die über Nacht verarbeitet wurden, nur mit einem einzigenArrow-Up
+Enter
:)Ich habe das folgende Snippet in meine Init-Datei eingefügt (funktioniert mit
.zshrc
, sollte auch mit funktionieren.bashrc
)quelle