El comando history en Linux sirve para consultar los comandos que has ejecutado en la terminal y reutilizarlos cuando los necesitas. Es una herramienta sencilla, pero muy útil para trabajar más rápido, repetir órdenes largas, revisar lo que hiciste en una sesión y detectar comandos que no deberían quedar guardados.
En esta guía aprenderás qué es history, cómo ver el historial de comandos, cómo buscar dentro de él, cómo repetir comandos anteriores, cómo borrar entradas concretas y qué precauciones conviene tomar para no guardar contraseñas, tokens u otros datos sensibles.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Qué es el comando history
history es un comando integrado en shells como Bash que muestra una lista numerada de comandos ejecutados por el usuario actual. Cada línea del historial tiene un número asociado, y ese número se puede usar después para repetir o eliminar una entrada concreta.
Su uso más básico es:
historyLa salida puede ser parecida a esta:
1 pwd
2 ls
3 cd Descargas
4 sudo apt update
5 historyLa columna de la izquierda indica el número de entrada. La parte de la derecha muestra el comando ejecutado.
Sintaxis básica del comando history
La sintaxis más habitual es:
history [opciones] [numero]Si ejecutas history sin argumentos, Bash muestra el historial disponible en la sesión actual. Si añades un número, solo verás las últimas entradas.
Por ejemplo:
history 10Este comando muestra los últimos 10 comandos guardados.
Dónde se guarda el historial en Linux
En Bash, el historial suele guardarse en el archivo:
~/.bash_historyDurante la sesión, Bash mantiene el historial en memoria. Al cerrar la terminal, normalmente escribe los comandos en ese archivo. Por eso, si tienes varias terminales abiertas, puede que una sesión no vea inmediatamente los comandos ejecutados en otra.
Puedes comprobar qué archivo usa tu shell con la variable HISTFILE:
echo "$HISTFILE"En muchos sistemas verás una ruta como:
/home/usuario/.bash_historyEjemplos útiles del comando history
Ver todo el historial
Para listar los comandos guardados:
historyEs la forma más directa de revisar qué órdenes has usado recientemente.
Ver solo las últimas entradas
Para mostrar una cantidad concreta de comandos:
history 20Este ejemplo enseña las últimas 20 entradas del historial. Puedes cambiar 20 por el número que necesites.
Buscar comandos anteriores
Una forma práctica de buscar en el historial es combinar history con grep:
history | grep sshEsto muestra las entradas que contienen ssh. Es útil si recuerdas una parte del comando, pero no el comando completo.
También puedes buscar servicios, rutas, paquetes o cualquier otro texto:
history | grep systemctl
history | grep apt
history | grep dockerUsar la búsqueda inversa con Ctrl + r
Bash permite buscar de forma interactiva en el historial con:
Ctrl + rDespués escribe una parte del comando que recuerdas. Bash irá mostrando coincidencias anteriores. Cuando aparezca el comando correcto, puedes pulsar Enter para ejecutarlo o usar las flechas para editarlo antes.
Esta opción suele ser más cómoda que revisar una lista larga con history.
Reutilizar comandos del historial
Una de las funciones más potentes del comando history es reutilizar comandos anteriores mediante la expansión de historial de Bash.
Repetir el último comando
Para ejecutar otra vez el comando anterior:
!!Un ejemplo muy común es olvidar sudo:
apt update
sudo !!Bash expande sudo !! y lo convierte en:
sudo apt updateEjecutar un comando por número
Si quieres repetir una entrada concreta del historial, usa ! seguido del número:
!42Esto ejecuta la entrada número 42. Primero puedes consultar los números con:
historyAntes de usar este método en sistemas importantes, revisa bien qué comando corresponde a ese número.
Ejecutar el último comando que empieza por un texto
También puedes repetir el último comando que empieza por una cadena concreta:
!sshSi el último comando que empezaba por ssh era:
ssh usuario@servidorentonces Bash lo ejecutará de nuevo.
Esta función ahorra tiempo, pero requiere cuidado. !sudo, por ejemplo, ejecutará el último comando que empiece por sudo, que quizá no sea el que tienes en mente.
Opciones comunes de history
Borrar una entrada concreta
Para eliminar una línea específica del historial en memoria:
history -d 42Este ejemplo borra la entrada número 42. Si quieres guardar el cambio en el archivo de historial, ejecuta después:
history -wBorrar todo el historial de la sesión
Para limpiar el historial cargado en memoria:
history -cSi además quieres sobrescribir el archivo de historial con ese historial vacío:
history -c
history -wUsa esta opción con cuidado, porque puede dificultar revisar qué se hizo antes en una máquina.
Escribir el historial en el archivo
Para guardar el historial actual en el archivo definido por HISTFILE:
history -wNormalmente ese archivo será ~/.bash_history.
Leer el historial desde el archivo
Para cargar el contenido del archivo de historial en la sesión actual:
history -rPuede ser útil si quieres traer a una terminal comandos guardados previamente.
Añadir comandos nuevos al archivo
Para añadir al archivo de historial las líneas nuevas de la sesión actual:
history -aEsta opción es práctica cuando trabajas con varias terminales y quieres conservar comandos recientes sin esperar a cerrar la sesión.
Variables importantes del historial de Bash
El comportamiento del historial se puede ajustar con variables de entorno. Las más habituales son HISTSIZE, HISTFILESIZE y HISTCONTROL.
HISTSIZE
HISTSIZE define cuántas entradas mantiene Bash en memoria durante la sesión:
echo "$HISTSIZE"Puedes cambiarlo temporalmente así:
HISTSIZE=5000Para hacerlo permanente, normalmente se añade al archivo ~/.bashrc.
HISTFILESIZE
HISTFILESIZE controla cuántas líneas se guardan en el archivo de historial:
echo "$HISTFILESIZE"Ejemplo:
HISTFILESIZE=10000La diferencia principal es que HISTSIZE afecta al historial cargado en la sesión, mientras que HISTFILESIZE afecta al tamaño del archivo ~/.bash_history.
HISTCONTROL
HISTCONTROL permite evitar que ciertos comandos se guarden. Un valor muy común es:
HISTCONTROL=ignorebothignoreboth combina dos comportamientos:
- ignorespace: no guarda comandos que empiezan con un espacio.
- ignoredups: no guarda comandos duplicados consecutivos.
Por ejemplo, si ignorespace está activo, este comando no se guardaría porque empieza con un espacio:
comando_con_dato_sensibleAun así, no conviene confiar en esto como medida de seguridad principal. Lo mejor es no escribir contraseñas, tokens o claves directamente en la terminal.
Ejemplo práctico: buscar y repetir un comando
Imagina que has estado configurando Nginx y quieres repetir un comando que ejecutaste hace unos minutos.
Primero buscas en el historial:
history | grep systemctlLa salida podría ser:
128 sudo systemctl status nginx
135 sudo systemctl restart nginx
141 sudo systemctl enable nginxSi quieres repetir el reinicio de Nginx, puedes ejecutar:
!135También podrías escribir:
!sudopero en este caso hay más riesgo, porque Bash ejecutará el último comando que empiece por sudo, no necesariamente el reinicio de Nginx. En servidores o equipos de producción, es más seguro copiar el comando, revisarlo y ejecutarlo de forma explícita.
Buenas prácticas de seguridad
El historial de comandos es cómodo, pero puede guardar información delicada. Evita escribir en la terminal:
- Contraseñas.
- Tokens de API.
- Claves privadas.
- URLs con credenciales.
- Comandos con secretos como argumentos.
Por ejemplo, esto es una mala práctica:
mysql -u usuario -pMiPasswordEs preferible usar métodos interactivos, archivos de configuración con permisos adecuados, gestores de secretos o variables de entorno bien controladas según el caso.
También conviene revisar de vez en cuando el historial si trabajas en servidores compartidos o máquinas donde administras servicios importantes.
Resumen del comando history
El comando history permite revisar, buscar, repetir y borrar comandos ejecutados en la terminal. Es especialmente útil cuando estás aprendiendo Linux, cuando administras sistemas o cuando necesitas recuperar una orden larga sin volver a escribirla desde cero.
Estos son los usos más importantes:
- history: muestra el historial.
- history 20: muestra las últimas 20 entradas.
- history | grep texto: busca comandos anteriores.
- !!: repite el último comando.
- !42: ejecuta la entrada número 42.
- history -d 42: borra una entrada concreta.
- history -c: limpia el historial en memoria.
- history -w: escribe el historial en el archivo.
- history -a: añade al archivo las líneas nuevas de la sesión.
Dominar history te ayuda a trabajar con más agilidad en Linux, pero también exige cuidado: todo lo que escribes en la terminal puede quedar guardado. Úsalo para ganar productividad, y evita que el historial se convierta en un lugar donde terminen contraseñas o datos sensibles.
Ejemplo en video
Para complementar esta guía, hemos preparado un video donde se muestra paso a paso cómo usar el comando history en Linux.
Este video te ayudará a comprender de manera práctica todo lo explicado en este artículo.
