Para evitar el registro de comandos "peligrosos" en el historial de bash, he agregado la siguiente línea a mi .bashrcarchivo:
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
esto funciona bien, pero tiene un efecto secundario: no puedo ver el historial completo de los comandos ejecutados en una máquina. Digamos que tengo varias máquinas para experimentos, y quiero poder ver todos los comandos ejecutados. Usaría bash internal historypara mostrar los comandos ejecutados, y quizás grep para la fecha de hoy:
history | grep Sep-28
Lo que me gustaría tener también es registrar comandos "peligrosos", pero poner un #al principio de la línea, de modo que si ejecuto el comando desde el historial por error, no se producirá ningún daño.
No tengo idea si esto es posible.
Actualización y aclaración:
La razón principal por la que esto es un problema para mí es que generalmente estoy conectado a mi máquina desde varios terminales, y cualquier comando ejecutado en un terminal se lee inmediatamente en el historial de otros terminales. Esto se logra mediante
PROMPT_COMMAND="history -a; history -c; history -r"
Imaginemos que tengo dos terminales abiertas. En uno tengo algún cat /dev/foo > file.outproceso en ejecución. En el segundo, verifico el progreso con ls -lAhF. Sigo repitiendo lspresionando Upy ENTER(es decir, el último comando del historial). Tan pronto como termina el primer comando, el último comando del historial ya no es ls, pero cat /dev/foo > file.out. Si no tengo cuidado, volveré a iniciar cat y sobrescribiré file.out.
Lo que me gustaría lograr es que el comando cat esté precedido por un #, para que no se ejecute. Sin embargo, todavía lo vería en la historia y puedo reutilizarlo (si es un comando largo) al descomentarlo.
watch ls -lAhFowhile sleep 1; do ls -lAhf; done; en lugar de ver el tamaño del archivo, puede usarpv /dev/foo > file.out( ivarch.com/programs/pv.shtml ).