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 HISTFILEprzed blokiem poleceń. Trzeba będzie HISTFILEpóź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ć zshaddhistoryfunkcję 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 zshoptsdołu HIST_IGNORE_SPACEnadal 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 ↑.