Pular para o conteúdo

Atuin

Gerenciador mágico de histórico do shell com armazenamento SQLite, sincronização criptografada e busca de texto completo entre máquinas e sessões.

ComandoDescrição
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | shInstalar via script oficial
brew install atuinInstalar no macOS com Homebrew
cargo install atuinInstalar a partir do crates.io
pacman -S atuinInstalar no Arch Linux
apt install atuinInstalar no Debian/Ubuntu (se disponível)
dnf install atuinInstalar no Fedora
nix-env -i atuinInstalar no NixOS
scoop install atuinInstalar no Windows com Scoop
atuin --versionMostrar versão instalada
ComandoDescrição
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 inicialização do Nushell
# Bash — adicionar ao ~/.bashrc
eval "$(atuin init bash)"

# Zsh — adicionar ao ~/.zshrc
eval "$(atuin init zsh)"

# Fish — adicionar ao ~/.config/fish/config.fish
atuin init fish | source

# Zsh com desativação da seta para cima (usar apenas Ctrl+R)
eval "$(atuin init zsh --disable-up-arrow)"
ComandoDescrição
Ctrl + RAbrir busca interativa de histórico
Digitar consulta após Ctrl + RFiltrar histórico interativamente
EnterExecutar comando selecionado
TabInserir comando sem executar
Ctrl + R novamenteAlternar entre modos de busca
↑ / ↓Navegar nos resultados da busca
EscapeCancelar busca
Ctrl + DExcluir entrada selecionada do histórico
Alt + 1-4Alternar modo de filtro (global/host/sessão/diretório)
ComandoDescrição
atuin history listMostrar histórico recente de comandos
atuin history list --cmd-onlyMostrar apenas comandos (sem metadados)
atuin history list --format "{time} {command}"Formato de saída personalizado
atuin history list --reverseMostrar mais antigos primeiro
atuin history list -n 50Mostrar últimos 50 comandos
atuin history countMostrar contagem total do histórico
atuin history lastMostrar comando mais recente
O Atuin alterna entre 4 modos de busca com Ctrl+R:

1. Fuzzy    — Corresponde caracteres em qualquer ordem (como fzf)
2. Prefix   — Corresponde a partir do início do comando
3. Fulltext — Corresponde substrings exatas em qualquer lugar
4. Skim     — Correspondência fuzzy estilo Skim

Alterne modos durante a busca com Ctrl+R, ou defina um padrão
no arquivo de configuração.
ComandoDescrição
atuin search queryBuscar no histórico pela linha de comando
atuin search "git commit"Buscar por comando específico
atuin search --cwdBuscar histórico apenas do diretório atual
atuin search --sessionBuscar histórico apenas da sessão atual
atuin search --globalBuscar todo o histórico entre máquinas
atuin search --interactiveAbrir interface interativa
ComandoDescrição
atuin search --after "2024-01-01"Buscar após data específica
atuin search --before "yesterday"Buscar antes de momento específico
atuin search --after "1 hour ago"Buscar dentro da última hora
atuin search --after "3 days ago"Buscar dentro dos últimos 3 dias
atuin search --after "last week"Buscar dentro da última semana
atuin search --before "2024-06-01" --after "2024-01-01"Intervalo de datas
ComandoDescrição
atuin search --exit 0Buscar apenas comandos bem-sucedidos
atuin search --exit 1Buscar apenas comandos com falha
atuin search --exit 127Buscar erros “comando não encontrado”
atuin search --limit 50Limitar número de resultados
ComandoDescrição
atuin search --cwd /path/to/dirFiltrar por diretório de trabalho específico
atuin search --hostname myserverFiltrar por nome do host
atuin search --session SESSION_IDFiltrar por ID de sessão
atuin search --duration ">5s"Filtrar por duração de execução
atuin search --duration "<100ms"Encontrar comandos rápidos
ComandoDescrição
atuin search --format "{time} {command}"Mostrar hora e comando
atuin search --format "{duration} {command}"Mostrar duração e comando
atuin search --format "{host} {command}"Mostrar hostname e comando
atuin search --format "{user} {directory} {command}"Contexto completo
# Encontrar todos os comandos docker que falharam
atuin search docker --exit 1

# Encontrar operações git da última semana
atuin search git --after "1 week ago"

# Encontrar comandos de longa duração (>30 segundos)
atuin search --duration ">30s"

# Encontrar comandos executados em um projeto específico
atuin search --cwd ~/projects/myapp

# Encontrar comandos do seu laptop de trabalho
atuin search --hostname work-mbp
ComandoDescrição
atuin register -u username -e email -p passwordCriar conta de sincronização
atuin login -u username -p passwordFazer login na conta de sincronização
atuin login -u username -p password -k KEYLogin com chave de criptografia
atuin logoutSair da conta de sincronização
atuin accountMostrar status da conta
atuin account deleteExcluir conta de sincronização
atuin keyMostrar chave de criptografia (salve esta!)
atuin statusMostrar status da sincronização
ComandoDescrição
atuin syncSincronizar histórico com o servidor
atuin sync -fForçar sincronização completa
atuin sync --forceForçar re-upload de todo o histórico
Todos os dados são criptografados de ponta a pontaO servidor nunca vê o histórico em texto simples
# Primeira configuração na máquina 1
atuin register -u myname -e me@example.com -p mypassword
atuin key  # SALVE ESTA CHAVE — você vai precisar dela para outras máquinas
atuin sync

# Configuração na máquina 2
atuin login -u myname -p mypassword -k YOUR_ENCRYPTION_KEY
atuin sync

# Sua chave de criptografia se parece com:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

# Sem a chave, o servidor não pode descriptografar seu histórico.
# Se você perder a chave, seu histórico sincronizado será irrecuperável.
# Executar seu próprio servidor de sincronização Atuin
docker run -d \
  --name atuin-server \
  -p 8888:8888 \
  -v atuin-data:/config \
  ghcr.io/atuinsh/atuin:latest \
  server start

# Apontar seu cliente para o servidor auto-hospedado
# Em ~/.config/atuin/config.toml:
# sync_address = "http://your-server:8888"
ComandoDescrição
atuin import autoAuto-detectar e importar histórico do shell
atuin import bashImportar do histórico do Bash
atuin import zshImportar do histórico do Zsh
atuin import zsh-hist-dbImportar do plugin hist-db do Zsh
atuin import fishImportar do histórico do Fish
atuin import reshImportar do histórico do RESH
atuin import nuImportar do histórico do Nushell
atuin import nu-hist-dbImportar do histórico SQLite do Nushell
# Auto-detectar seu shell e importar
atuin import auto

# Importar histórico do Zsh especificamente
atuin import zsh

# Verificar quantas entradas foram importadas
atuin history count

# Verificar se a importação funcionou
atuin search --limit 5
ComandoDescrição
atuin statsMostrar estatísticas do histórico
atuin stats --count 20Mostrar top 20 comandos mais usados
atuin stats --period dayEstatísticas de hoje
atuin stats --period weekEstatísticas desta semana
atuin stats --period monthEstatísticas deste mês
atuin stats --period allEstatísticas de todo o período
atuin history countTotal de entradas no histórico
$ 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
ComandoDescrição
~/.config/atuin/config.tomlArquivo principal de configuração
atuin default-configImprimir configuração padrão
ComandoDescrição
search_mode = "fuzzy"Definir modo de busca fuzzy
search_mode = "prefix"Definir modo de busca por prefixo
search_mode = "fulltext"Definir modo de busca de texto completo
search_mode = "skim"Definir modo de busca fuzzy skim
filter_mode = "global"Buscar todo o histórico por padrão
filter_mode = "host"Buscar host atual por padrão
filter_mode = "session"Buscar sessão atual por padrão
filter_mode = "directory"Buscar diretório atual por padrão
filter_mode_shell_up_key_binding = "session"Seta para cima busca na sessão atual
ComandoDescrição
style = "compact"Usar estilo de interface compacto
style = "full"Usar estilo de interface completo
style = "auto"Auto-detectar baseado no terminal
inline_height = 40Definir altura da busca inline
show_preview = trueMostrar painel de pré-visualização do comando
show_help = trueMostrar ajuda de atalhos de teclado
show_tabs = trueMostrar abas de modo de filtro
max_preview_height = 4Máximo de linhas para pré-visualização
# ~/.config/atuin/config.toml

## Configurações do Banco de Dados
db_path = "~/.local/share/atuin/history.db"

## Configurações de Busca
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"

## Configurações de Interface
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false

## Configurações de Histórico
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"

## Atalhos de teclado (padrão)
# Ctrl+R = buscar
# Seta para cima = buscar (a menos que desativado)
# Tab = aceitar sem executar
# Enter = aceitar e executar

## Filtro de segredos — não registrar comandos com segredos
history_filter = [
  "^export.*TOKEN",
  "^export.*SECRET",
  "^export.*PASSWORD",
  "^export.*KEY",
  ".*AWS_SECRET.*",
]

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

## Configurações de sincronização
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh"  # Servidor padrão
# sync_address = "http://localhost:8888"  # Auto-hospedado
TeclaDescrição
Ctrl + RAbrir busca / alternar modo de busca
↑ / ↓Navegar nos resultados
EnterExecutar comando selecionado
TabInserir comando sem executar
EscapeCancelar busca
Ctrl + DExcluir entrada de histórico selecionada
Alt + 1Alternar para filtro global
Alt + 2Alternar para filtro por host
Alt + 3Alternar para filtro por sessão
Alt + 4Alternar para filtro por diretório
Ctrl + ULimpar consulta de busca
Ctrl + WExcluir palavra anterior
ComandoDescrição
~/.local/share/atuin/history.dbLocalização padrão do banco de dados
O banco de dados usa formato SQLitePode consultar com qualquer ferramenta SQLite
sqlite3 ~/.local/share/atuin/history.db ".tables"Listar tabelas do banco de dados
# Abrir o banco de dados diretamente com SQLite
sqlite3 ~/.local/share/atuin/history.db

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

# Encontrar comandos de maior duração
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT command, duration FROM history
   ORDER BY duration DESC LIMIT 10;"

# Comandos por diretório
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT cwd, COUNT(*) as cnt FROM history
   GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
  1. Importe seu histórico existente primeiro — Execute atuin import auto imediatamente após a instalação para começar com um banco de dados de histórico rico em vez de do zero.

  2. Use o modo de busca fuzzy — Defina search_mode = "fuzzy" para a correspondência mais flexível. Você sempre pode alternar para outros modos com Ctrl+R durante a busca.

  3. Filtre segredos do histórico — Adicione padrões ao history_filter na configuração para evitar registrar comandos contendo tokens, senhas e chaves de API.

  4. Salve sua chave de criptografia — Execute atuin key e armazene a chave em um gerenciador de senhas. Se você perdê-la, o histórico sincronizado de outras máquinas será permanentemente irrecuperável.

  5. Configure a sincronização entre máquinas — A sincronização criptografada é o recurso principal do Atuin. Registre uma conta e configure todas as suas máquinas para ter histórico unificado em todos os lugares.

  6. Use busca com escopo de diretório — Pressione Alt+4 durante a busca para filtrar comandos executados no diretório atual — perfeito para fluxos de trabalho específicos de projetos.

  7. Personalize a seta para cima — Defina filter_mode_shell_up_key_binding = "host" para que a seta para cima mostre apenas comandos da máquina atual, enquanto Ctrl+R busca globalmente.

  8. Configure o servidor auto-hospedado — Se você lida com dados sensíveis, execute seu próprio servidor Atuin com Docker para controle completo sobre seu histórico sincronizado.

  9. Revise as estatísticas regularmente — Execute atuin stats periodicamente para entender seus padrões e identificar comandos que você poderia criar aliases para maior eficiência.

  10. Use estilo compacto para terminais pequenos — Defina style = "compact" se você trabalha em terminais de painéis divididos com espaço vertical limitado.