Réponses:
Utilisez l'option HIST_IGNORE_SPACE.
setopt HIST_IGNORE_SPACE
homme zshoptions
HIST_IGNORE_SPACE
Supprimez les lignes de commande de la liste d'historique lorsque le premier caractère de la ligne est un espace ou lorsque l'un des alias développés contient un espace de début. Notez que la commande persiste dans l'historique interne jusqu'à ce que la commande suivante soit entrée avant qu'elle ne disparaisse, vous permettant de réutiliser brièvement ou de modifier la ligne. Si vous souhaitez le faire disparaître immédiatement sans entrer une autre commande, tapez un espace et appuyez sur Entrée.
kill -9 $$
est en effet fantastique pour éviter que toutes les commandes émises dans la session de terminal en cours soient stockées dans l'historique.
unset HISTFILE
avant votre bloc de commandes. Vous auriez besoin de réinitialiser HISTFILE
par la suite ou d'ouvrir un nouveau shell pour conserver les commandes que vous souhaitez dans votre historique.
Si vous souhaitez un contrôle plus granulaire de ce qui est ajouté à l'historique ZSH, vous pouvez définir la zshaddhistory
fonction dans .zshrc
. La définition suivante utilise une expression régulière pour définir un modèle à ignorer:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Notez que le comportement de man zshopts
dessous HIST_IGNORE_SPACE
est toujours présent:
Notez que la commande persiste dans l'historique interne jusqu'à ce que la commande suivante soit entrée avant qu'elle ne disparaisse, vous permettant de réutiliser brièvement ou de modifier la ligne.
Donc, pour le tester, vous devriez en toucher un supplémentaire [Enter]
. Cela supprime la commande à la fois de la sortie de history
et de l'historique des flèches ↑.