Gestor mágico de historial del shell con almacenamiento SQLite, sincronización cifrada y búsqueda de texto completo entre máquinas y sesiones.
| Comando | Descripción |
|---|
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh | Instalar mediante script oficial |
brew install atuin | Instalar en macOS con Homebrew |
cargo install atuin | Instalar desde crates.io |
pacman -S atuin | Instalar en Arch Linux |
apt install atuin | Instalar en Debian/Ubuntu (si está disponible) |
dnf install atuin | Instalar en Fedora |
nix-env -i atuin | Instalar en NixOS |
scoop install atuin | Instalar en Windows con Scoop |
atuin --version | Mostrar versión instalada |
| Comando | Descripción |
|---|
atuin init bash >> ~/.bashrc | Inicializar para Bash |
atuin init zsh >> ~/.zshrc | Inicializar para Zsh |
atuin init fish >> ~/.config/fish/config.fish | Inicializar para Fish |
atuin init nushell | Mostrar 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)"
| Comando | Descripción |
|---|
Ctrl + R | Abrir búsqueda interactiva del historial |
Escribir consulta después de Ctrl + R | Filtrar historial interactivamente |
Enter | Ejecutar comando seleccionado |
Tab | Insertar comando sin ejecutar |
Ctrl + R de nuevo | Alternar entre modos de búsqueda |
↑ / ↓ | Navegar resultados de búsqueda |
Escape | Cancelar búsqueda |
Ctrl + D | Eliminar entrada seleccionada del historial |
Alt + 1-4 | Cambiar modo de filtro (global/host/sesión/directorio) |
| Comando | Descripción |
|---|
atuin history list | Mostrar historial reciente de comandos |
atuin history list --cmd-only | Mostrar solo comandos (sin metadatos) |
atuin history list --format "{time} {command}" | Formato de salida personalizado |
atuin history list --reverse | Mostrar los más antiguos primero |
atuin history list -n 50 | Mostrar últimos 50 comandos |
atuin history count | Mostrar cantidad total del historial |
atuin history last | Mostrar 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.
| Comando | Descripción |
|---|
atuin search query | Buscar en el historial desde la línea de comandos |
atuin search "git commit" | Buscar un comando específico |
atuin search --cwd | Buscar historial solo del directorio actual |
atuin search --session | Buscar historial solo de la sesión actual |
atuin search --global | Buscar todo el historial en todas las máquinas |
atuin search --interactive | Abrir interfaz interactiva |
| Comando | Descripció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 |
| Comando | Descripción |
|---|
atuin search --exit 0 | Buscar solo comandos exitosos |
atuin search --exit 1 | Buscar solo comandos fallidos |
atuin search --exit 127 | Buscar errores de “comando no encontrado” |
atuin search --limit 50 | Limitar número de resultados |
| Comando | Descripción |
|---|
atuin search --cwd /path/to/dir | Filtrar por directorio de trabajo específico |
atuin search --hostname myserver | Filtrar por nombre de host |
atuin search --session SESSION_ID | Filtrar por ID de sesión |
atuin search --duration ">5s" | Filtrar por duración de ejecución |
atuin search --duration "<100ms" | Encontrar comandos rápidos |
| Comando | Descripció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
| Comando | Descripción |
|---|
atuin register -u username -e email -p password | Crear cuenta de sincronización |
atuin login -u username -p password | Iniciar sesión en la cuenta de sincronización |
atuin login -u username -p password -k KEY | Iniciar sesión con clave de cifrado |
atuin logout | Cerrar sesión de la cuenta de sincronización |
atuin account | Mostrar estado de la cuenta |
atuin account delete | Eliminar cuenta de sincronización |
atuin key | Mostrar clave de cifrado (¡guárdala!) |
atuin status | Mostrar estado de sincronización |
| Comando | Descripción |
|---|
atuin sync | Sincronizar historial con el servidor |
atuin sync -f | Forzar sincronización completa |
atuin sync --force | Forzar re-subida de todo el historial |
| Todos los datos están cifrados de extremo a extremo | El 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"
| Comando | Descripción |
|---|
atuin import auto | Auto-detectar e importar historial del shell |
atuin import bash | Importar desde historial de Bash |
atuin import zsh | Importar desde historial de Zsh |
atuin import zsh-hist-db | Importar desde plugin hist-db de Zsh |
atuin import fish | Importar desde historial de Fish |
atuin import resh | Importar desde historial de RESH |
atuin import nu | Importar desde historial de Nushell |
atuin import nu-hist-db | Importar 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
| Comando | Descripción |
|---|
atuin stats | Mostrar estadísticas del historial |
atuin stats --count 20 | Mostrar top 20 comandos más usados |
atuin stats --period day | Estadísticas de hoy |
atuin stats --period week | Estadísticas de esta semana |
atuin stats --period month | Estadísticas de este mes |
atuin stats --period all | Estadísticas de todo el tiempo |
atuin history count | Total 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
| Comando | Descripción |
|---|
~/.config/atuin/config.toml | Archivo de configuración principal |
atuin default-config | Imprimir configuración por defecto |
| Comando | Descripció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 |
| Comando | Descripció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 = 40 | Establecer altura de búsqueda en línea |
show_preview = true | Mostrar panel de vista previa del comando |
show_help = true | Mostrar ayuda de atajos de teclado |
show_tabs = true | Mostrar pestañas de modo de filtro |
max_preview_height = 4 | Má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
| Tecla | Descripción |
|---|
Ctrl + R | Abrir búsqueda / alternar modo de búsqueda |
↑ / ↓ | Navegar resultados |
Enter | Ejecutar comando seleccionado |
Tab | Insertar comando sin ejecutar |
Escape | Cancelar búsqueda |
Ctrl + D | Eliminar entrada del historial seleccionada |
Alt + 1 | Cambiar a filtro global |
Alt + 2 | Cambiar a filtro de host |
Alt + 3 | Cambiar a filtro de sesión |
Alt + 4 | Cambiar a filtro de directorio |
Ctrl + U | Limpiar consulta de búsqueda |
Ctrl + W | Eliminar palabra hacia atrás |
| Comando | Descripción |
|---|
~/.local/share/atuin/history.db | Ubicación por defecto de la base de datos |
| La base de datos usa formato SQLite | Se 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;"
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Configura el servidor auto-alojado — Si manejas datos sensibles, ejecuta tu propio servidor Atuin con Docker para tener control completo sobre tu historial sincronizado.
-
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.
-
Usa estilo compacto para terminales pequeñas — Establece style = "compact" si trabajas en terminales de paneles divididos con espacio vertical limitado.