Historial de comandos en GNU Linux con history
Lo admito, soy incapaz de recordar los pasos y los comandos que he utilizado para configurar o instalar un servicio al cabo de las semanas. Por suerte GNU Linux nos brinda una serie de herramientas con éste fin. Una de ellas es el comando history, que recoge todo lo escrito en la shell o línea de comandos a lo largo de un tiempo o número de entradas determinada.
Historial de comandos con history
La orden history nos muestra en pantalla, por defecto, el historial de comandos escritos en la terminal, guardados en el fichero .bash_history dentro de nuestra carpeta de usuario.
Si en la consola de mi equipo escribo:
history
Me mostrará lo siguiente:
Por orden de uso, vemos los comandos utilizados recientemente en el sistema operativo. Si listamos el fichero .bash_history con el comando cat, veremos idéntico resultado, ya que es en éste fichero donde se guarda dicho historial.
cat .bash_history
Y nos listará la información:
Aún así history, por defecto, tiene algunas limitaciones, a 500 o 1000 entradas por usuario, y otra problema es que si tenemos múltiples ventanas de consola abiertas sólo guardará información de la primera. Los parámetros del comando están ubicados en el fichero .bashrc, que se pueden modificar de manera fácil, veamos un ejemplo.
Los parámetros:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
Indican el tamaño del historial y el máximo de ordenes que se almacenarán. Aquí podemos modificar los parámetros, sustituyendo ambas cantidades por la cifra ‘100000’, para que así siempre guarde todo el historial.
A continuación:
shopt -s histappend
De ésta manera se guardará el historial de todas nuestras terminales, es decir, se irán anexando en vez de sobrescribirse.
El comando también tiene una serie de parámetros adicionales:
- history -n, muestra el número de líneas.
- history -a, añade los comandos de la sesión actual al archivo de historial.
- history -c, borra todo el historial.
- history – d 500, borra el comando número quinientos del historial.
Otra manera de trabajar con el historial de comandos es la combinación de teclas CTRL+R, que nos permite buscar dentro del historial, buscando por palabra.
También podemos utilizar con el comando history algunos tips interesantes, que he descubierto en la web del amigo replicante:
- Combinar con el comando tail, para por ejemplo descubrir los últimos comandos utilizados: $history | tail -10, o bien los 10 primeros: $history | head -10
- Si queremos que se ejecute justo el último de la lista escribimos: !!
- O bien ejecutar un comando específico si sabemos su número en la lista: !74
- Y de forma consecutiva: !54 & !74
Espero que el artículo os haya sido de utilidad, para mi lo ha sido sin duda, ya que es una información que viene bien siempre tener cerca.
Gracias por la mención colega! muy interesante el post, en especial lo de histappend, es muy útil.
Saludos!
Pues sí, el comando history y CTRL+R me han salvado la vida más de una vez, fiu!
Saludos!
Muy bueno el articulo!
Ahora tengo una duda, ejecutando
shopt -s histappend
ya queda siempre configurado, o hay que hacerlo cada vez que iniciamos sesión? como se deshace?
Gracias.
Hola Matias!
Una vez has modificado el fichero .bashrc ya queda guardado «in eternum» : )
Me encantan los trucos del historial porque nunca me acuerdo de nada 😀
Es especialmente genial para mí porque comparte combinaciones de teclas con Emacs (como el reverse search con Ctrl + R) así que no tengo que memorizar cosas nuevas.
Saludos!
Yo también soy despistado para estas cosas, tantos comandos y parámetros…, suerte que tengo estos artículos 🙂
Ctrl + R lo que estaba buscando
al
¿como puedo listar el history de otro usuario?
Acabo de ver ese archivo .txt suelto en mi carpeta personal y creo que es un punto crítico de seguridad. ya que alguien que pueda tener acceso a tu sistema puede tomar tus llaves de inicio y la próxima vez entrará sin pedir permiso.-
Hola,
No sé a que archivo te refieres.
Saludos