Comment supprimer une entrée de l’histoire dans ZSH

Disons que j’ai couru une commande en utilisant un zsh

echo "mysecret" > file

Je peux facilement imprimer l’historique en incluant les numéros d’entrée en utilisant la commande fc -l :

 1 echo "mysecret" >| file 

Mais comment puis-je facilement supprimer une entrée de l’historique?

Je ne trouve pas de paragraphe correspondant dans l’ homme zshbuiltins .

* BSD / Darwin:

 LC_ALL=C sed -i '' '/porn/d' $HISTFILE 

Linux (GNU sed):

 LC_ALL=C sed -i '/porn/d' $HISTFILE 

Cela supprimera toutes les lignes correspondant à “porn” de votre $ HISTFILE.

Avec setopt HIST_IGNORE_SPACE , vous pouvez append à la commande ci-dessus un espace pour l’empêcher d’écrire dans $ HISTFILE.

Comme Tim l’a souligné dans son commentaire ci – dessous , le préfixe LC_ALL = C empêche l’échec de la «séquence d’octets illégaux».

Je ne sais pas s’il existe une méthode élégante pour le faire, mais dans des situations similaires, je me suis déconnecté (permettant à zsh de vider son tampon et d’écrire mon historique dans un fichier), puis connecté et finalement modifié manuellement ~/.zsh_history , supprimant la ligne “dangereuse”.

Si vous utilisez l’option HIST_IGNORE_SPACE dans zsh, vous pouvez append des commandes avec un espace “” et elles ne seront pas mémorisées dans le fichier d’historique. Si vous utilisez des commandes secrètes, vous pouvez faire quelque chose dans ce sens:

http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/