Fundamentos de la línea de comandos

Teoría: Historia

Cuando usamos mucho la terminal (línea de comandos), lo más común es repetir comandos una y otra vez. Por suerte, hay una manera muy práctica de recuperar lo que hemos escrito antes sin tener que escribirlo todo otra vez. En esta lección vamos a aprender a trabajar con el historial de comandos, paso a paso, con ejemplos y casos reales.


¿Qué es el historial de comandos?

Cada vez que escribimos un comando en la terminal, Bash (el programa que ejecuta estos comandos) lo guarda en una especie de “libreta” para que podamos reutilizarlo más tarde. Esta libreta se llama historial de comandos y se guarda en un archivo especial que no se borra cuando cerramos la terminal.

Archivo .bash_history

El archivo donde se guarda el historial se llama .bash_history y se encuentra en nuestro directorio personal.

Nota: este archivo solo se actualiza al cerrar la terminal, no en tiempo real.

Podemos verlo con el comando tail, que nos muestra las últimas líneas del archivo:

tail .bash_history

Por ejemplo, podríamos ver algo como esto:

rm -r one/
env
HOME=/tmp cd
pwd
cd
echo $HOME
export HOME=/tmp
id
exit
id

asciicast

Usar las teclas de flecha

La forma más sencilla de revisar comandos anteriores es usar las teclas ↑ (flecha arriba) y ↓ (flecha abajo) del teclado:

  • Presiona ↑ para ver el comando anterior.
  • Presiona ↓ para ir al siguiente.

Esta forma no requiere escribir nada, y es muy útil si estás buscando un comando que escribiste recientemente.


Usar el comando history

Otra manera más directa de ver todo el historial es con el comando history:

history

La salida se ve así:

1  docker ps
 2  free -m
 3  docker exec -it 8678a6520641 bash
 4  ls
 5  exit
 6  docker ps
 7  docker exec -it 1209b6e5ce6b bash

asciicast

Podemos pedir solo los últimos registros, por ejemplo los últimos 5:

history 5

Repetir un comando por su número

Cada comando tiene un número. Si queremos repetir uno sin escribirlo de nuevo, usamos el símbolo de exclamación ! seguido del número del comando.

Por ejemplo:

!2

Eso ejecuta el comando número 2 del historial. En nuestro ejemplo, sería:

free -m

Y el resultado es:

total        used        free      shared  buff/cache   available
Mem:           1998        1532          75          21         390         227
Swap:             0           0           0

asciicast

Buscar en el historial usando grep

Si queremos encontrar un comando en específico, podemos usar grep, que es una herramienta para buscar texto.

Por ejemplo, si recordamos que usamos el comando export pero no recordamos cómo era exactamente, usamos:

history | grep export

Esto nos mostrará solo las líneas del historial que incluyen export.

174  export HOME=/tmp
 183  history | grep export

asciicast

Búsqueda inversa: Ctrl + r

Este truco es de los más útiles. Si presionamos las teclas Ctrl + r dentro de la terminal se activa una búsqueda en el historial.

Luego de eso, empezamos a escribir parte del comando. Por ejemplo, si escribimos “dock”, nos puede salir:

(reverse-i-search)`dock’: docker ps

Si no es el comando que buscas, puedes seguir presionando Ctrl + r para avanzar por los siguientes coincidencias.

Esta búsqueda es muy rápida cuando no recuerdas bien el comienzo del comando completo.


¿Cuántos comandos guarda el historial?

La cantidad de comandos que guarda Bash depende de una variable de entorno llamada HISTFILESIZE.

  • Si está definida, su valor indica la cantidad máxima de líneas en el historial.
  • Si no está definida, el historial puede crecer sin límite.

Podemos ver el valor actual con:

echo $HISTFILESIZE

Y si queremos cambiarlo temporalmente (solo para la sesión actual), podemos usar:

export HISTFILESIZE=2000

Esto hará que solo los últimos 2000 comandos se almacenen.


Búsqueda avanzada con FZF

Hay herramientas más modernas para buscar en el historial. Una muy útil es fzf, que permite hacer búsquedas interactivas con autocompletado.

FZF

Aunque esta herramienta no viene instalada por defecto, puede mejorar mucho la experiencia si trabajamos seguido con la terminal.


Resumen

  • La terminal guarda los comandos en un archivo llamado .bash_history.
  • Podemos revisar comandos anteriores con flechas ↑ y ↓.
  • El comando history muestra todo el historial, cada comando con un número.
  • Podemos repetir un comando anterior usando !n, donde n es el número del comando.
  • Si usamos history | grep palabra, buscamos comandos por palabra clave.
  • Con Ctrl + r activamos una búsqueda interactiva en el historial.
  • La cantidad de comandos que se guardan depende de la variable HISTFILESIZE.
  • Herramientas como fzf permiten búsquedas más rápidas y cómodas.

Conocer bien el historial de Bash nos ayuda a trabajar mucho más rápido y con menos errores. Nos vemos en la siguiente lección.