Cómo usar el comando history en la Terminal de Mac: consultar, buscar, limpiar y afinar tu historial

4/5 - (141 votos)

Qué es el historial y cómo funciona en macos (bash y zsh)

La Terminal de macOS actúa como una herramienta versátil para ejecutar órdenes de sistema a través de shells como Bash o Zsh. Ambos shells mantienen un registro de los comandos ejecutados, conocido como historial de comandos. Este historial se almacena tanto en memoria durante la sesión actual como en un archivo persistente en el disco duro. En Zsh, el archivo se llama ~/.zsh_history, mientras que en Bash es ~/.bash_history.

El historial en memoria proporciona acceso rápido a los comandos recientes mediante las teclas de flecha arriba/abajo, mientras que el archivo persistente conserva los comandos entre sesiones. Es importante comprender la diferencia entre estos dos tipos de historial para gestionar efectivamente la privacidad y el almacenamiento de comandos.

Cómo consultar tu historial de terminal en mac

Existen métodos directos para revisar los comandos anteriores en la Terminal de macOS, ya sea mostrando el historial en pantalla o inspeccionando el archivo persistente.

  1. Consultar en pantalla el historial reciente con history (bash y zsh)

    history
    history 20
    history | head -n 10
    history | less

    El comando history muestra todos los comandos en memoria. Puede limitarse a las últimas entradas usando history 20 o combinarse con head o less para facilitar la navegación.

  2. Leer el archivo histórico persistente

    Para inspeccionar el archivo histórico en Bash y Zsh, utiliza:

    cat ~/.bash_history
    cat ~/.zsh_history
    less ~/.zsh_history

    Diferencias entre el historial en memoria y el archivo pueden surgir debido a configuraciones como HISTSIZE y HISTFILESIZE, que determinan cuántas entradas se almacenan.

Buscar y reutilizar comandos del historial (grep, ctrl+r y expansión)

Con un historial extenso, usar filtros es esencial. grep es una herramienta eficaz para localizar comandos específicos:

history | grep -i sudo

El uso de -i permite una búsqueda insensible a mayúsculas. Las expresiones regulares extendidas permiten búsquedas más complejas:

history | grep -E 'apt.*--purge'
history | grep 'apt|--purge'

La búsqueda inversa interactiva con Ctrl+R facilita encontrar y ejecutar comandos previos. Una vez localizado un comando, se puede re-ejecutar mediante su número de línea:

!281   # ejecuta la entrada con número 281
!!     # repite el último comando

Borrar el historial en mac: sesión actual y archivo persistente

Vaciar la historia de la sesión actual

Para borrar el historial en memoria en Bash, el comando es:

history -c

En Zsh, history -c también es efectivo. Es esencial saber esto para gestionar la privacidad durante una sesión activa.

Eliminar o truncar el archivo persistente

Para eliminar o vaciar el archivo de historial, se puede hacer de la siguiente manera:

rm ~/.zsh_history           # elimina el archivo
: > ~/.zsh_history         # lo trunca a tamaño 0

Y para Bash:

rm ~/.bash_history
: > ~/.bash_history

Para evitar la reescritura de entradas, asegúrate de cerrar la Terminal antes de realizar estas acciones.

Renombrar y recuperar el histórico

Para preservar el historial sin borrarlo, se puede renombrar el archivo:

mv /Users/tu_usuario/.bash_history ~/.bash_history_old
rm /Users/tu_usuario/.bash_history 2>/dev/null || true
mv ~/.bash_history_old ~/.bash_history

Recuerda cerrar y reabrir la Terminal para que los cambios surtan efecto.

Ajustar el comportamiento del historial (tamaño, duplicados, tiempos)

El comportamiento del historial se puede personalizar editando los archivos de configuración del shell. Para Bash, edita ~/.bashrc o ~/.bash_profile; para Zsh, ~/.zshrc o ~/.zprofile.

Capacidad del historial

HISTSIZE=30000
HISTFILESIZE=40000

Estos valores controlan cuántas entradas se almacenan en memoria y en el archivo.

Control de duplicados y comandos con espacio inicial

HISTCONTROL=ignoreboth     # equivale a ignorespace,ignoredups
# Alternativas:
# HISTCONTROL=ignorespace
# HISTCONTROL=ignoredups
# HISTCONTROL=ignorespace,erasedups

Estos ajustes ayudan a mantener un historial limpio eliminando duplicados y comandos no deseados.

Marcas temporales

HISTTIMEFORMAT="%F %T: "  # Año-mes-día hora:minuto:segundo

Permite agregar fechas y horas a cada entrada en el historial.

Ejemplos prácticos: listar, filtrar, borrar líneas concretas

Algunas acciones comunes para mejorar la eficiencia incluyen:

# Mostrar los últimos 20 comandos
env HISTTIMEFORMAT="%F %T: " history 20

# Ver las 10 primeras entradas cargadas en memoria
history | head -n 10

# Filtrar por una palabra y ejecutar por número
history | grep apt
!1884

# Borrar una entrada específica en Bash
history -d 500

Privacidad y seguridad: qué borrar y qué proteger

Si compartes un equipo o manejas información sensible, borrar el historial de la sesión y el archivo persistente es esencial. Además, es posible evitar que el historial se guarde mediante:

unset HISTFILE

En macOS, puedes proteger archivos utilizando chflags para marcar el archivo como inmutable:

# En macOS, marcar inmutable (reversible con -nouchg)
chflags uchg ~/.zsh_history

Solucionar problemas frecuentes al usar history

Para solucionar problemas, asegúrate de revisar la sintaxis de los comandos, las rutas y el shell que estás utilizando. Puedes verificar tu PATH con:

echo $PATH

Y restablecerlo si es necesario. Además, consulta los manuales específicos para tu versión de macOS si encuentras diferencias en el comportamiento de los comandos.

Truco extra de teclado: repetir caracteres en lugar de acentos alternativos

Para cambiar el comportamiento de repetición de teclas en macOS, utiliza:

defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool FALSE

Si prefieres volver al comportamiento original, el comando es:

defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool TRUE

Alternativa de terceros para limpieza general (privacidad y cachés)

Para gestionar y limpiar rastros en el sistema, existen herramientas como Macube que ayudan a identificar y eliminar datos obsoletos y temporales. Estas herramientas no son necesarias para gestionar el historial, pero pueden ser útiles para una limpieza más amplia.

Dominar el comando history en macOS optimiza tu flujo de trabajo, permitiéndote consultar y repetir comandos de manera efectiva, ajustando el historial a tus necesidades y garantizando la privacidad y seguridad de tus datos.