Gibt es eine Möglichkeit, zu verhindern, dass ein Befehl zu Ihrem Verlauf hinzugefügt wird? Ich habe einen Befehl, den ich aus meiner Verlaufsdatei entfernen möchte, und es ist mir wirklich egal, wenn ich den im Speicher abgelegten Verlauf durchsuche, obwohl das weniger bedenklich ist. Gibt es eine Möglichkeit, dies zu verhindern, oder muss ich einfach zurückgehen und meine Verlaufsdatei bearbeiten.
update: Ich wusste nicht, dass dies Shell-spezifisch sein könnte. Meine Muschel ist zsh
. Sie können gerne für andere Shells antworten, damit die Leute wissen, wie dies in ihrer Shell gemacht wird.
bash
security
zsh
command-history
Xenoterracid
quelle
quelle
Antworten:
In ZSH :
Zuerst fügen Sie
setopt HIST_IGNORE_SPACE
zu Ihrem~/.zshrc
. Nachdem Sie sich erneut angemeldet haben, können Sie Befehlen, die nicht im Verlauf gespeichert werden sollen, das Präfix a voranstellenspace
.In der Bedienungsanleitung können die folgenden 3 Optionen verwendet werden, um anzugeben, dass bestimmte Zeilen überhaupt nicht in den Verlauf aufgenommen werden sollen:
quelle
| somecommand
preexec
, die dafür verwendet werden kann. Wird ein Wert ungleich Null zurückgegeben, wird der Befehl nicht im Verlauf gespeichert.setopt HIST_IGNORE_SPACE
in~/.zshrc
Wenn Sie den Befehl immer wieder ausführen, möchten Sie möglicherweise die Funktion zum Ignorieren des Shell-Verlaufs verwenden. Nehmen wir an, Sie haben secret.server.com, zu dem Sie sshen, FTP-Dateien usw., und Sie möchten keine Zeile, in der secret.server.com gespeichert ist:
In
bash
du würdest setzenwohingegen in
zsh
dem Parameter aufgerufen wirdSie können mehrere Muster mit einem Doppelpunkt auflisten. Beachten Sie, dass jedes Muster mit der gesamten Eingabezeile abgeglichen wird , sodass Sie möglicherweise ein * einfügen müssen. Beispiel: Folgendes wird
fortune
aus dem Verlauf ausgeschlossen, jedoch gespeichertfortune -l
:Wenn HISTIGNORE eingestellt ist, wird nichts, was mit den aufgelisteten Mustern übereinstimmt, in
.bash_history
/ gespeichert,.zsh_history
und selbst die Aufwärtspfeiltaste, die normalerweise an Ihren vorherigen Befehl erinnert, funktioniert nicht, wenn sie mit Ihrem Muster übereinstimmt.quelle
HISTIGNORE="^fortune*"
zu ignorieren,fortune -l
aber zu behaltenmyfortune
?Verwenden Sie in der Bash die
HISTCONTROL
Variable.Stellen Sie es auf
HISTCONTROL=ignorespace
(oderHISTCONTROL=ignoreboth
). Wenn Sie eine Zeile mit einem Leerzeichen beginnen , wird sie ab sofort nicht mehr im Verlauf gespeichert. Dadurch wird vermieden, dass der nicht offenbarte Befehl in einer Konfigurationsdatei enthalten ist.Auch so kommt es vor, dass man vergisst, das Leerzeichen einzufügen und dann zurück will. Um einen Eintrag im Verlauf zu löschen, verwenden Sie
history -d <index>
, mitindex
der mit demhistory
Befehl gefundenen Nummer (erste Spalte).quelle
zsh
?Der einfachste Weg für ein Unikat ist
wo
$
stellt die Aufforderung des Anfangsschale und$$
stellt die Eingabeaufforderung des Subshell. Dies funktioniert in bash und zsh; in ksh brauchst duHISTFILE=/notwritable
stattdessen. Beachten Sie, dass es darauf ankommt,HISTFILE
wann die Verlaufsdatei geschrieben wird und nicht wann der Befehl ausgeführt wird. Bash, ksh und zsh schreiben beim Beenden in die Verlaufsdatei (zsh kann dies je nach Konfiguration häufiger tun).Alternativ können Sie mit bash oder zsh Zeilen ignorieren, die bestimmten Mustern entsprechen (dies wird bereits von anderen Antworten abgedeckt).
Eine andere Möglichkeit in zsh ist
fc -p
Verschiebt die aktuelle Verlaufsliste auf einen Stapel und startet eine neue, die keiner Sicherungsdatei zugeordnet ist.fc -P
Knallt die nicht gespeicherte Historie vom Stapel und vergisst sie insgesamt.Während ein Prozess ausgeführt wird, werden der Befehl und seine Argumente (und auf einigen Systemen auch seine Umgebung) in der Prozesstabelle (
ps
Ausgabe) angezeigt. Root kann frühere Befehle in der Systemabrechnungsdatenbank anzeigen und ohne Ihre Kontrolle mehr protokollieren. Und es wird wahrscheinlich alle Arten von forensischen Beweisen geben, die ungefähr zeigen, welchen Befehl Sie ausgeführt haben (wie z. B. Änderungszeiten von Dateien). Sie erhalten also keine Privatsphäre gegenüber entschlossenen Lauschern.quelle