lunes, junio 22, 2015

Hide Bash command history

Como controlar el historial de comandos de bash.

Bash guarda la historia de comandos en el archivo .bash_history ubicado en nuestro $HOME, pero ese archivo se escribe hasta el exit del bash.

Es posible mandar a escribir prematuramente el archivo de history mediante

history -w

También es posible limpiar completamente el buffer de comandos en la sesión de bash actual:

history -c

Dentro de bash podemos consultar la historia mediante el comando history la cual incluye tanto los comandos del archivo como los que hemos dado en la sesion actual.

Como corolario de lo anterior si tenemos varias sesiones de bash abiertas la salida del comando history difiere entre ellas

La variable de entorno HISTFILE indica al bash en que archivo guardar el history al salir.

Una forma de evitar se guarden los comandos en el archivo history es cambiar la variable por ejemplo mandarlo al dispositivo nulo o eliminar la variable

HISTFILE=/dev/null

O eliminando la variable

unset HISTFILE

Esto también lo podemos usar cuando queremos realizar un procedimiento especifico y documentar todo lo que hemos hecho, si todo se realiza en una única sesión de bash, entonces podemos mandar los comandos ejecutados a un archivo de registro, esto funcionara bien siempre y cuanto lo hagamos antes del exit del bash:

HISTFILE=comandos_proceso_X

Si lo que deseamos es borrar un comando especifico del history, lo podemos hacer con el número con el que aparece en la salida del comando history por ejemplo borrar el comando 325

history -d 325

El número de lineas que el archivo de historia guarda esta determinado por la variable de entorno HISTFILESIZE

El número de lineas cargadas en el buffer del comando history esta determinado por la variable de entorno HISTSIZE

Para evitar que un comando ingrese en la historia basta con comenzar el comando dejando un caracter de espacio, esto funciona aún cuando la variable de control HISTIGNORE="" (el valor por default), por lo que si no deseamos que el comando se incluya en el history basta empezarlo dejando un espacio:

echo "in history"
 echo "not in history"

No hay comentarios.: