/ / Come posso avere zsh escludere determinati comandi dalla cronologia? - zsh, zshrc

Come posso avere zsh escludere determinati comandi dalla cronologia? - zsh, zshrc

Come, ad esempio, quelli che includono la parola "produzione"?

risposte:

4 per risposta № 1
function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$"n"}"
fc -p
else
return 1
fi
}

Metti il ​​precedente in un file che sarà originato all'avvio della shell interattiva (a .zshrc o a un file di provenienza .zshrc come faccio io).

Forma alternativa (aggiunta implicita alla storia):

function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}

. Nota:

print -sr -- "${1%%$"n"}"

aggiunge esplicitamente elemento alla cronologia. Ma la stessa cosa implicitamente fa zsh se zshaddhistory ritorna con zero exit code, quindi senza fc -p e con setopt nohistignoredups nohistignorealldups (che è lo stato predefinito) vedrai duplicati non necessari nella cronologia.

emulate -L zsh è qui per assicurarsi che le impostazioni di emulazione non intervengano e cambino l'interpretazione del corpo della funzione. Metto questa linea all'inizio di ogni funzione che definisco nella configurazione di zsh.