Antworten:
Verwenden Sie die Option HIST_IGNORE_SPACE.
setopt HIST_IGNORE_SPACE
Mann zshoptions
HIST_IGNORE_SPACE
Entfernen Sie Befehlszeilen aus der Verlaufsliste, wenn das erste Zeichen in der Zeile ein Leerzeichen ist oder wenn einer der erweiterten Aliase ein führendes Leerzeichen enthält. Beachten Sie, dass der Befehl im internen Verlauf verweilt, bis der nächste Befehl eingegeben wird, bevor er verschwindet. Auf diese Weise können Sie die Zeile kurzzeitig wiederverwenden oder bearbeiten. Wenn Sie möchten, dass es sofort verschwindet, ohne einen anderen Befehl einzugeben, geben Sie ein Leerzeichen ein und drücken Sie die Eingabetaste.
kill -9 $$
Es ist in der Tat fantastisch zu vermeiden, dass alle in der aktuellen Terminalsitzung ausgegebenen Befehle im Verlauf gespeichert werden.
unset HISTFILE
vor deinem Befehlsblock stehen . Sie müssen danach zurücksetzen HISTFILE
oder eine neue Shell öffnen, um die gewünschten Befehle in Ihrem Verlauf zu speichern.
Wenn Sie eine genauere Kontrolle darüber wünschen, was zur ZSH-Historie hinzugefügt wird, können Sie die zshaddhistory
Funktion in definieren .zshrc
. Die folgende Definition verwendet einen regulären Ausdruck, um ein zu ignorierendes Muster zu definieren:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Beachten Sie, dass das Verhalten von man zshopts
unter HIST_IGNORE_SPACE
noch vorhanden ist:
Beachten Sie, dass der Befehl im internen Verlauf verweilt, bis der nächste Befehl eingegeben wird, bevor er verschwindet. Auf diese Weise können Sie die Zeile kurzzeitig wiederverwenden oder bearbeiten.
Um es zu testen, müsste man ein Extra treffen [Enter]
. Dadurch wird der Befehl sowohl aus der Ausgabe von history
als auch aus der ↑ Pfeilhistorie entfernt.