lunes, 1 de marzo de 2021

Exprimiendo el historial de la terminal


En mi trabajo a veces tengo que lidiar con una centralita Asterisk más antigua que el acueducto de Segovia. Corre en un Debian sin entorno gráfico y eso me obliga a guerrear con la consola. Y si los comandos de Debian te parecen crípticos, no te imaginas lo que es consultar cuantas líneas están en uso picando comandos de Asterisk.

Por suerte bash recuerda el historial de los comandos tecleados (o rebuscados en Google) y como mi memoria es limitada, trato de sacarle partido a lo que ya tecleé.


Por defecto, bash recuerda los últimos dos mil comandos escritos y es capaz de mostrarnos los últimos mil. Esto es configurable si necesitas más. Si quieres ejercer de tirano y configurar esto para todo usuario de tu equipo, deberás editar el fichero /etc/bash.bashrc y si solo quieres cambiarlo para ti, en el fichero .bashrc que está en tu home.

En todo caso, debes cambiar los valores de HISTFILESIZE para cambiar cuanto se almacena y HISTSIZE para cambiar cuanto se muestra.

Bien, ya estamos a gusto con lo que se recuerda. ¿Cómo lo consultamos?  

La primera opción es sencillamente listar con cat o editar con nano el fichero .bash_history que vive oculto en tu home. Lo bueno es que puedes buscar dentro de ese fichero si recuerdas alguna parte del comando que necesitas, puedes copiar para hacerte un guion recordatorio o borrar algo que no quieras que se recuerde.

Pero hay un comando llamado history que nos mostrará el contenido de .bash_history si solo queremos una referencia rápida. Y ademas nos permite una serie de acciones interesantes.

Si solo queremos que se nos muestren los 10 ó 20 últimos registros.

  • history 20

Pero a lo mejor, queremos recordar algo que hicimos hace mucho tiempo, así que podemos ver, por ejemplo, los primeros 10 registros.

  • history | head -n 10

Bien, hemos obtenido premio, hemos localizado el comando que queremos, pero localizarlo no es suficiente, queremos ejecutarlo. ¿Ves el numerito que tiene delante? Pues lo puedes ejecutar así

  • !numerito

Y más rápido todavía, si el comando es el último que hemos ejecutado...

  • !! 

Esto ademas es muy útil si has escrito un comando y resulta que hay que ejecutarlo como root, solo tienes que poner...

  • sudo !!
¿Y qué pasa si queremos ser malotes y ejecutar algo sin que quede constancia? Bueno, pues solo tienes que ejecutarlo poniendo antes un espacio en blanco.


Y colorín colorado, mi historial he domesticado.

2 comentarios:

  1. También es útil la búsqueda inversa que se puede hacer en el historial con "Control-R", aunque se puede mejorar escribiendo un script que incluya fzf.

    ResponderEliminar

prekes sodui