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 HISTFILE
prima del tuo blocco di comandi. Dovresti reimpostare in HISTFILE
seguito 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 zshaddhistory
funzione 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 zshopts
sotto 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 ↑.