ohmyzsh - Cómo eliminar una entrada del historial en ZSH
zsh themes linux (3)
Digamos que ejecuté un comando usando un zsh
echo "mysecret" > file
Puedo imprimir fácilmente el historial incluyendo los números de entrada usando el comando fc -l
:
1 echo "mysecret" >| file
Pero, ¿cómo puedo eliminar fácilmente una entrada del historial?
No puedo encontrar un párrafo correspondiente en man zshbuiltins .
* BSD / Darwin:
LC_ALL=C sed -i '''' ''/porn/d'' $HISTFILE
Linux (GNU sed):
LC_ALL=C sed -i ''/porn/d'' $HISTFILE
Esto eliminará todas las líneas que coincidan con "pornografía" de su $ HISTFILE.
Con setopt HIST_IGNORE_SPACE
, puede anteponer el comando anterior con un carácter de espacio para evitar que se escriba en $ HISTFILE.
Como Tim señaló en su comentario a continuación , el prefijo LC_ALL = C evita el error de ''secuencia de bytes ilegal''.
No sé si hay algún método elegante para hacer esto, pero en situaciones similares he cerrado sesión (permitiendo que zsh vacíe su búfer y escriba mi historial en el archivo), luego inicie sesión y finalmente ~/.zsh_history
manualmente ~/.zsh_history
, eliminando la línea "peligrosa".
Si usa la opción HIST_IGNORE_SPACE en zsh, puede anteponer comandos con un espacio "" y no se recordarán en el archivo histórico. Si tiene comandos secretos que usa comúnmente, puede hacer algo en este sentido:
http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/