Ir al contenido

Atuin

Gestor mágico de historial del shell con almacenamiento SQLite, sincronización cifrada y búsqueda de texto completo entre máquinas y sesiones.

ComandoDescripción
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | shInstalar mediante script oficial
brew install atuinInstalar en macOS con Homebrew
cargo install atuinInstalar desde crates.io
pacman -S atuinInstalar en Arch Linux
apt install atuinInstalar en Debian/Ubuntu (si está disponible)
dnf install atuinInstalar en Fedora
nix-env -i atuinInstalar en NixOS
scoop install atuinInstalar en Windows con Scoop
atuin --versionMostrar versión instalada
ComandoDescripción
atuin init bash >> ~/.bashrcInicializar para Bash
atuin init zsh >> ~/.zshrcInicializar para Zsh
atuin init fish >> ~/.config/fish/config.fishInicializar para Fish
atuin init nushellMostrar comandos de inicialización para Nushell
# Bash — agregar a ~/.bashrc
eval "$(atuin init bash)"

# Zsh — agregar a ~/.zshrc
eval "$(atuin init zsh)"

# Fish — agregar a ~/.config/fish/config.fish
atuin init fish | source

# Zsh con desactivar flecha arriba (usar solo Ctrl+R)
eval "$(atuin init zsh --disable-up-arrow)"
ComandoDescripción
Ctrl + RAbrir búsqueda interactiva del historial
Escribir consulta después de Ctrl + RFiltrar historial interactivamente
EnterEjecutar comando seleccionado
TabInsertar comando sin ejecutar
Ctrl + R de nuevoAlternar entre modos de búsqueda
↑ / ↓Navegar resultados de búsqueda
EscapeCancelar búsqueda
Ctrl + DEliminar entrada seleccionada del historial
Alt + 1-4Cambiar modo de filtro (global/host/sesión/directorio)
ComandoDescripción
atuin history listMostrar historial reciente de comandos
atuin history list --cmd-onlyMostrar solo comandos (sin metadatos)
atuin history list --format "{time} {command}"Formato de salida personalizado
atuin history list --reverseMostrar los más antiguos primero
atuin history list -n 50Mostrar últimos 50 comandos
atuin history countMostrar cantidad total del historial
atuin history lastMostrar el comando más reciente
Atuin alterna entre 4 modos de búsqueda con Ctrl+R:

1. Fuzzy    — Coincide caracteres en cualquier orden (como fzf)
2. Prefix   — Coincide desde el inicio del comando
3. Fulltext — Coincide subcadenas exactas en cualquier posición
4. Skim     — Coincidencia difusa estilo Skim

Cambia de modo durante la búsqueda con Ctrl+R, o establece
uno por defecto en el archivo de configuración.
ComandoDescripción
atuin search queryBuscar en el historial desde la línea de comandos
atuin search "git commit"Buscar un comando específico
atuin search --cwdBuscar historial solo del directorio actual
atuin search --sessionBuscar historial solo de la sesión actual
atuin search --globalBuscar todo el historial en todas las máquinas
atuin search --interactiveAbrir interfaz interactiva
ComandoDescripción
atuin search --after "2024-01-01"Buscar después de una fecha específica
atuin search --before "yesterday"Buscar antes de un momento específico
atuin search --after "1 hour ago"Buscar dentro de la última hora
atuin search --after "3 days ago"Buscar dentro de los últimos 3 días
atuin search --after "last week"Buscar dentro de la última semana
atuin search --before "2024-06-01" --after "2024-01-01"Rango de fechas
ComandoDescripción
atuin search --exit 0Buscar solo comandos exitosos
atuin search --exit 1Buscar solo comandos fallidos
atuin search --exit 127Buscar errores de “comando no encontrado”
atuin search --limit 50Limitar número de resultados
ComandoDescripción
atuin search --cwd /path/to/dirFiltrar por directorio de trabajo específico
atuin search --hostname myserverFiltrar por nombre de host
atuin search --session SESSION_IDFiltrar por ID de sesión
atuin search --duration ">5s"Filtrar por duración de ejecución
atuin search --duration "<100ms"Encontrar comandos rápidos
ComandoDescripción
atuin search --format "{time} {command}"Mostrar hora y comando
atuin search --format "{duration} {command}"Mostrar duración y comando
atuin search --format "{host} {command}"Mostrar nombre de host y comando
atuin search --format "{user} {directory} {command}"Contexto completo
# Encontrar todos los comandos docker que fallaron
atuin search docker --exit 1

# Encontrar operaciones git de la última semana
atuin search git --after "1 week ago"

# Encontrar comandos de larga duración (>30 segundos)
atuin search --duration ">30s"

# Encontrar comandos ejecutados en un proyecto específico
atuin search --cwd ~/projects/myapp

# Encontrar comandos desde tu laptop de trabajo
atuin search --hostname work-mbp
ComandoDescripción
atuin register -u username -e email -p passwordCrear cuenta de sincronización
atuin login -u username -p passwordIniciar sesión en la cuenta de sincronización
atuin login -u username -p password -k KEYIniciar sesión con clave de cifrado
atuin logoutCerrar sesión de la cuenta de sincronización
atuin accountMostrar estado de la cuenta
atuin account deleteEliminar cuenta de sincronización
atuin keyMostrar clave de cifrado (¡guárdala!)
atuin statusMostrar estado de sincronización
ComandoDescripción
atuin syncSincronizar historial con el servidor
atuin sync -fForzar sincronización completa
atuin sync --forceForzar re-subida de todo el historial
Todos los datos están cifrados de extremo a extremoEl servidor nunca ve el historial en texto plano
# Primera configuración en la máquina 1
atuin register -u myname -e me@example.com -p mypassword
atuin key  # GUARDA ESTA CLAVE — la necesitarás para otras máquinas
atuin sync

# Configuración en la máquina 2
atuin login -u myname -p mypassword -k YOUR_ENCRYPTION_KEY
atuin sync

# Tu clave de cifrado se ve así:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

# Sin la clave, el servidor no puede descifrar tu historial.
# Si pierdes la clave, tu historial sincronizado es irrecuperable.
# Ejecutar tu propio servidor de sincronización Atuin
docker run -d \
  --name atuin-server \
  -p 8888:8888 \
  -v atuin-data:/config \
  ghcr.io/atuinsh/atuin:latest \
  server start

# Apuntar tu cliente al servidor auto-alojado
# En ~/.config/atuin/config.toml:
# sync_address = "http://your-server:8888"
ComandoDescripción
atuin import autoAuto-detectar e importar historial del shell
atuin import bashImportar desde historial de Bash
atuin import zshImportar desde historial de Zsh
atuin import zsh-hist-dbImportar desde plugin hist-db de Zsh
atuin import fishImportar desde historial de Fish
atuin import reshImportar desde historial de RESH
atuin import nuImportar desde historial de Nushell
atuin import nu-hist-dbImportar desde historial SQLite de Nushell
# Auto-detectar tu shell e importar
atuin import auto

# Importar historial de Zsh específicamente
atuin import zsh

# Verificar cuántas entradas se importaron
atuin history count

# Verificar que la importación funcionó
atuin search --limit 5
ComandoDescripción
atuin statsMostrar estadísticas del historial
atuin stats --count 20Mostrar top 20 comandos más usados
atuin stats --period dayEstadísticas de hoy
atuin stats --period weekEstadísticas de esta semana
atuin stats --period monthEstadísticas de este mes
atuin stats --period allEstadísticas de todo el tiempo
atuin history countTotal de entradas del historial
$ atuin stats --count 10
┌─────────┬─────────────────┬───────┐
│ Rank    │ Command         │ Count │
├─────────┼─────────────────┼───────┤
│ 1       │ git status      │  1847 │
│ 2       │ ls              │  1523 │
│ 3       │ cd              │  1201 │
│ 4       │ git diff        │   987 │
│ 5       │ vim             │   842 │
│ 6       │ git add         │   756 │
│ 7       │ docker ps       │   689 │
│ 8       │ npm run         │   534 │
│ 9       │ git commit      │   498 │
│ 10      │ make            │   423 │
└─────────┴─────────────────┴───────┘

Total commands:   45,231
Unique commands:   8,432
ComandoDescripción
~/.config/atuin/config.tomlArchivo de configuración principal
atuin default-configImprimir configuración por defecto
ComandoDescripción
search_mode = "fuzzy"Establecer modo de búsqueda difusa
search_mode = "prefix"Establecer modo de búsqueda por prefijo
search_mode = "fulltext"Establecer modo de búsqueda de texto completo
search_mode = "skim"Establecer modo de búsqueda difusa skim
filter_mode = "global"Buscar en todo el historial por defecto
filter_mode = "host"Buscar en el host actual por defecto
filter_mode = "session"Buscar en la sesión actual por defecto
filter_mode = "directory"Buscar en el directorio actual por defecto
filter_mode_shell_up_key_binding = "session"Flecha arriba busca en la sesión actual
ComandoDescripción
style = "compact"Usar estilo de interfaz compacto
style = "full"Usar estilo de interfaz completo
style = "auto"Auto-detectar según la terminal
inline_height = 40Establecer altura de búsqueda en línea
show_preview = trueMostrar panel de vista previa del comando
show_help = trueMostrar ayuda de atajos de teclado
show_tabs = trueMostrar pestañas de modo de filtro
max_preview_height = 4Máximo de líneas para vista previa
# ~/.config/atuin/config.toml

## Configuración de Base de Datos
db_path = "~/.local/share/atuin/history.db"

## Configuración de Búsqueda
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"

## Configuración de Interfaz
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false

## Configuración del Historial
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"

## Atajos de teclado (por defecto)
# Ctrl+R = búsqueda
# Flecha arriba = búsqueda (a menos que esté desactivada)
# Tab = aceptar sin ejecutar
# Enter = aceptar y ejecutar

## Filtro de secretos — no registrar comandos con secretos
history_filter = [
  "^export.*TOKEN",
  "^export.*SECRET",
  "^export.*PASSWORD",
  "^export.*KEY",
  ".*AWS_SECRET.*",
]

## Ignorar comandos específicos
history_filter = [
  "^ls$",
  "^cd$",
  "^pwd$",
  "^exit$",
  "^clear$",
]

## Configuración de sincronización
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh"  # Servidor por defecto
# sync_address = "http://localhost:8888"  # Auto-alojado
TeclaDescripción
Ctrl + RAbrir búsqueda / alternar modo de búsqueda
↑ / ↓Navegar resultados
EnterEjecutar comando seleccionado
TabInsertar comando sin ejecutar
EscapeCancelar búsqueda
Ctrl + DEliminar entrada del historial seleccionada
Alt + 1Cambiar a filtro global
Alt + 2Cambiar a filtro de host
Alt + 3Cambiar a filtro de sesión
Alt + 4Cambiar a filtro de directorio
Ctrl + ULimpiar consulta de búsqueda
Ctrl + WEliminar palabra hacia atrás
ComandoDescripción
~/.local/share/atuin/history.dbUbicación por defecto de la base de datos
La base de datos usa formato SQLiteSe puede consultar con cualquier herramienta SQLite
sqlite3 ~/.local/share/atuin/history.db ".tables"Listar tablas de la base de datos
# Abrir la base de datos directamente con SQLite
sqlite3 ~/.local/share/atuin/history.db

# Contar entradas totales
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT COUNT(*) FROM history;"

# Encontrar los comandos de mayor duración
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT command, duration FROM history
   ORDER BY duration DESC LIMIT 10;"

# Comandos por directorio
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT cwd, COUNT(*) as cnt FROM history
   GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
  1. Importa tu historial existente primero — Ejecuta atuin import auto inmediatamente después de la instalación para comenzar con una base de datos de historial rica en lugar de desde cero.

  2. Usa el modo de búsqueda difusa — Establece search_mode = "fuzzy" para la coincidencia más flexible. Siempre puedes alternar a otros modos con Ctrl+R durante una búsqueda.

  3. Filtra secretos del historial — Agrega patrones a history_filter en la configuración para evitar registrar comandos que contengan tokens, contraseñas y claves API.

  4. Guarda tu clave de cifrado — Ejecuta atuin key y almacena la clave en un gestor de contraseñas. Si la pierdes, el historial sincronizado desde otras máquinas es permanentemente irrecuperable.

  5. Configura la sincronización entre máquinas — La sincronización cifrada es la característica principal de Atuin. Registra una cuenta y configura todas tus máquinas para tener historial unificado en todas partes.

  6. Usa búsqueda por directorio — Presiona Alt+4 durante la búsqueda para filtrar comandos que ejecutaste en el directorio actual — perfecto para flujos de trabajo específicos de proyectos.

  7. Personaliza la flecha arriba — Establece filter_mode_shell_up_key_binding = "host" para que la flecha arriba muestre solo comandos de la máquina actual, mientras Ctrl+R busca globalmente.

  8. Configura el servidor auto-alojado — Si manejas datos sensibles, ejecuta tu propio servidor Atuin con Docker para tener control completo sobre tu historial sincronizado.

  9. Revisa las estadísticas regularmente — Ejecuta atuin stats periódicamente para entender tus patrones e identificar comandos que podrías crear como alias para mayor eficiencia.

  10. Usa estilo compacto para terminales pequeñas — Establece style = "compact" si trabajas en terminales de paneles divididos con espacio vertical limitado.