Risposte:
Utilizza l'opzione HIST_IGNORE_SPACE.
setopt HIST_IGNORE_SPACE
zshoptions uomo
hist_ignore_space
Rimuovere le righe di comando dall'elenco cronologico quando il primo carattere sulla riga è uno spazio o quando uno degli alias espansi contiene uno spazio iniziale. Si noti che il comando rimane nella cronologia interna fino a quando non viene immesso il comando successivo prima che scompaia, consentendo di riutilizzare o modificare brevemente la riga. Se vuoi farlo svanire immediatamente senza immettere un altro comando, digita uno spazio e premi Invio.
kill -9 $$è davvero fantastico evitare che tutti i comandi emessi nella sessione terminale corrente vengano memorizzati nella cronologia.
unset HISTFILEprima del tuo blocco di comandi. Dovresti reimpostare in HISTFILEseguito o aprire una nuova shell per mantenere i comandi nella cronologia che desideri.
Se desideri un controllo più granulare su ciò che viene aggiunto alla cronologia di ZSH, puoi definire la zshaddhistoryfunzione in .zshrc. La seguente definizione utilizza una regex per definire un modello da ignorare:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Si noti che il comportamento da man zshoptssotto HIST_IGNORE_SPACEè ancora presente:
Si noti che il comando rimane nella cronologia interna fino a quando non viene immesso il comando successivo prima che scompaia, consentendo di riutilizzare o modificare brevemente la riga.
Quindi per provarlo, dovresti fare un extra [Enter]. Ciò rimuove sia il comando dall'output di history, sia la cronologia della freccia ↑.