En esta ocasión, algunas ideas y tips relativas al comando history.
Provee la funcionalidad de registrar los comandos ingresados para consulta o reejecución.
Repecto a la concurrencia, tiene la particularidad de que a medida que se van cerrando las sesiones se van guardando, cada una con su estado y sobreescribiendo las otras. En otras palabras, gana la última que escriba y eso vale para las abiertas que no tenés a la vista como accesos vía ssh o terminales en otras workspaces.
El registro está en ~/.bash_history, se puede editar.
Con el comando
history -d N
eliminar la línea N.
Si no querés que se salve
unset HISTFILE && exit
y este que es más lindo, pero no cierra la ventana si estás en un entorno gráfico
kill -9 $$
y la verdad que no sé que hace en un entorno no gráfico.
Un truquito que se me ocurrió hace muchos años, incluso me lo pagaron en la revista Linux Journal, lo llamé "disposable alias", me había matado con el texto y lo redujeron a casi nada:
tech tip |
Consiste en agregar un comentario al final de los comandos que querés ejecutar varias veces pero no vale la pena hacer un script o un alias y querés recuperar con control-R:
comando ; # tag
Por ejemplo:
find . -iname "*borrar* -exec ls -l {} \;" ; # listar_a_borrar
Si pensás que con control-R borrar podés lograr el mismo efecto, considerá que cerca va a estar lleno de cosas como:
view borrar.txt
rm borrar2.txt
mkdir TRASH
mv borrar3.txt TRASH
y así...
La joya
Todo esto que escribí es solo para entrar en tema, ¿qué pasa si ejecutaste algo como esto?
Hay una manera mucho más sencilla
HISTCONTROL
A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ‘ignorespace’, lines which begin with a space character are not saved in the history list.
Perspectiva de seguridad
Debido a la destrucción producto de la concurrencia, la facilidad de eliminar, editar o incluso suprimir todo, history sirve de modo muy incompleto para análisis forense. Si realmente necesitás trazabilidad, andá por el lado de auditd.
Respecto a comentar que existe lo de HISTCONTROL, un atacante que lo conozca podría en el medio de una serie de comandos normales que no llamarían la atención, ejecutar sin que quede registrado alguno malicioso en particular.
Mantener oculto lo de HISTCONTROL sólo contribuiría a una falsa sensación de seguridad mientras que el hacerlo conocido ayuda a que hayan menos datos sensibles en history, gana comentarlo.