Odpowiedzi:
Użyj opcji HIST_IGNORE_SPACE.
setopt HIST_IGNORE_SPACE
człowiek zshoptions
HIST_IGNORE_SPACE
Usuń wiersze poleceń z listy historii, gdy pierwszym znakiem w linii jest spacja lub gdy jeden z rozwiniętych aliasów zawiera spację wiodącą. Zauważ, że polecenie pozostaje w historii wewnętrznej, dopóki kolejne polecenie nie zostanie wprowadzone, zanim zniknie, co pozwala na krótkie ponowne użycie lub edycję wiersza. Jeśli chcesz, aby zniknął od razu bez wprowadzania innego polecenia, wpisz spację i naciśnij klawisz Return.
kill -9 $$
jest naprawdę fantastyczne, aby uniknąć zapisywania wszystkich poleceń wydanych podczas bieżącej sesji terminala w historii.
unset HISTFILE
przed blokiem poleceń. Trzeba będzie HISTFILE
później zresetować lub otworzyć nową powłokę, aby zachować polecenia w historii, które chcesz.
Jeśli chcesz bardziej szczegółową kontrolę nad tym, co zostało dodane do historii ZSH, możesz zdefiniować zshaddhistory
funkcję w .zshrc
. Poniższa definicja używa wyrażenia regularnego do zdefiniowania wzorca do zignorowania:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Pamiętaj, że zachowanie od man zshopts
dołu HIST_IGNORE_SPACE
nadal występuje:
Zauważ, że polecenie pozostaje w historii wewnętrznej, dopóki kolejne polecenie nie zostanie wprowadzone, zanim zniknie, co pozwala na krótkie ponowne użycie lub edycję wiersza.
Aby to przetestować, musiałbyś trafić dodatkowo [Enter]
. Usuwa to polecenie zarówno z danych wyjściowych history
, jak i historii strzałek ↑.