Excluir que algunos de los comandos se almacenen en el historial de bash


31

¿Hay alguna forma de excluir comandos como rm -rf, svn revertde ser almacenados en el historial bash? En realidad, por error, los he emitido varias veces a pesar de que no tengo intención de hacerlo, solo porque estoy haciendo las cosas rápidamente y sucedió. Por lo tanto, resulta en la pérdida de mucho trabajo que he hecho hasta ahora.


Respuestas:


53

Es posible que desee $HISTIGNORE: "Una lista de patrones separados por dos puntos utilizados para decidir qué líneas de comando deben guardarse en la lista del historial". Esta línea en su ~ / .bashrc debería hacer el trabajo:

HISTIGNORE='rm *:svn revert*'

Además, puede agregar un espacio al comienzo de un comando para excluirlo del historial. Esto funciona siempre que $HISTCONTROLcontenga ignorespaceo ignoreboth, que es el valor predeterminado en cualquier distribución que haya usado.


44
El espacio es como siempre lo he hecho.
Rob

Solía ​​ingresar accidentalmente más y, después de todo cp(alias para cp -i) superar. Así que alias ycomo alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'... Pero HISTIGNOREes un mejor método como parece. :) Gracias.
anishsane

2
Solo para ser más explícito: puede agregar export HISTCONTROL="ignorespace"a su ~/.bashrcpara ignorar los comandos que comienzan con espacios.
Aidan Feldman

@AidanFeldman no predeterminado en macOS
akauppi

NOTA: se debe incluir espacio cuando escribimos en la línea de comando y no en HISTIGNORE.
Gayan Weerakutti

6

Aunque va un poco diferente de la pregunta de OP, cuando intencionalmente no quiero que un comando se almacene en el historial de bash, los prefijo con un espacio. Funciona en Ubuntu y sus variantes, no estoy seguro si funciona en todos los sistemas.


66
Depende de $HISTCONTROL(ver mi respuesta).
l0b0

@ l0b0 bien, gracias por señalar.
k4rtik

1

Por lo general, mato mi instancia de bash cuando he hecho cosas que no quiero en la historia.

kill -9 $$

$$ representa el proceso actual: bash cuando lo ejecutas desde el shell. Puede usar $ BASHPID, pero eso es más escribir :-)


2
Algunas configuraciones de Bash (como esta ) guardarán el historial después de cada comando, y en ese caso esto no funcionará.
l0b0

1
Solía ​​hacer esto. pero la configuración HISTFILE=/dev/nulles una mejor opción.
anishsane

simplemente HISTFILE=funciona tanto en bash como en ksh.
kubanczyk

ounset HISTFILE
Todd Walton
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.