Disons que j'ai exécuté une commande en utilisant un zsh
echo "mysecret" > file
Je peux facilement imprimer l'historique, y compris les numéros d'entrée, à l'aide de la commande fc -l
:
1 echo "mysecret" >| file
Mais comment supprimer facilement une entrée de l'historique?
Je ne trouve pas de paragraphe correspondant dans man zshbuiltins.
LC_ALL=C sed -i '' '/porn/d' $HISTFILE
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 ajouter à la commande ci-dessus un caractère espace pour l'empêcher d'être écrite 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 de me connecter et enfin édité manuellement~/.zsh_history
, en supprimant la ligne "dangereux".
Si vous utilisez l'option HIST_IGNORE_SPACE dans zsh, vous pouvez ajouter des commandes avec un espace "" et elles ne seront pas mémorisées dans le fichier d'historique. Si vous avez des commandes secrètes que vous utilisez couramment, vous pouvez faire quelque chose comme ceci:
http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/