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.
| Comando | Descrição |
|---|
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh | Instalar via script oficial |
brew install atuin | Instalar no macOS com Homebrew |
cargo install atuin | Instalar a partir do crates.io |
pacman -S atuin | Instalar no Arch Linux |
apt install atuin | Instalar no Debian/Ubuntu (se disponível) |
dnf install atuin | Instalar no Fedora |
nix-env -i atuin | Instalar no NixOS |
scoop install atuin | Instalar no Windows com Scoop |
atuin --version | Mostrar versão instalada |
| Comando | Descrição |
|---|
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 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)"
| Comando | Descrição |
|---|
Ctrl + R | Abrir busca interativa de histórico |
Digitar consulta após Ctrl + R | Filtrar histórico interativamente |
Enter | Executar comando selecionado |
Tab | Inserir comando sem executar |
Ctrl + R novamente | Alternar entre modos de busca |
↑ / ↓ | Navegar nos resultados da busca |
Escape | Cancelar busca |
Ctrl + D | Excluir entrada selecionada do histórico |
Alt + 1-4 | Alternar modo de filtro (global/host/sessão/diretório) |
| Comando | Descrição |
|---|
atuin history list | Mostrar histórico recente de comandos |
atuin history list --cmd-only | Mostrar apenas comandos (sem metadados) |
atuin history list --format "{time} {command}" | Formato de saída personalizado |
atuin history list --reverse | Mostrar mais antigos primeiro |
atuin history list -n 50 | Mostrar últimos 50 comandos |
atuin history count | Mostrar contagem total do histórico |
atuin history last | Mostrar 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.
| Comando | Descrição |
|---|
atuin search query | Buscar no histórico pela linha de comando |
atuin search "git commit" | Buscar por comando específico |
atuin search --cwd | Buscar histórico apenas do diretório atual |
atuin search --session | Buscar histórico apenas da sessão atual |
atuin search --global | Buscar todo o histórico entre máquinas |
atuin search --interactive | Abrir interface interativa |
| Comando | Descriçã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 |
| Comando | Descrição |
|---|
atuin search --exit 0 | Buscar apenas comandos bem-sucedidos |
atuin search --exit 1 | Buscar apenas comandos com falha |
atuin search --exit 127 | Buscar erros “comando não encontrado” |
atuin search --limit 50 | Limitar número de resultados |
| Comando | Descrição |
|---|
atuin search --cwd /path/to/dir | Filtrar por diretório de trabalho específico |
atuin search --hostname myserver | Filtrar por nome do host |
atuin search --session SESSION_ID | Filtrar por ID de sessão |
atuin search --duration ">5s" | Filtrar por duração de execução |
atuin search --duration "<100ms" | Encontrar comandos rápidos |
| Comando | Descriçã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
| Comando | Descrição |
|---|
atuin register -u username -e email -p password | Criar conta de sincronização |
atuin login -u username -p password | Fazer login na conta de sincronização |
atuin login -u username -p password -k KEY | Login com chave de criptografia |
atuin logout | Sair da conta de sincronização |
atuin account | Mostrar status da conta |
atuin account delete | Excluir conta de sincronização |
atuin key | Mostrar chave de criptografia (salve esta!) |
atuin status | Mostrar status da sincronização |
| Comando | Descrição |
|---|
atuin sync | Sincronizar histórico com o servidor |
atuin sync -f | Forçar sincronização completa |
atuin sync --force | Forçar re-upload de todo o histórico |
| Todos os dados são criptografados de ponta a ponta | O 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"
| Comando | Descrição |
|---|
atuin import auto | Auto-detectar e importar histórico do shell |
atuin import bash | Importar do histórico do Bash |
atuin import zsh | Importar do histórico do Zsh |
atuin import zsh-hist-db | Importar do plugin hist-db do Zsh |
atuin import fish | Importar do histórico do Fish |
atuin import resh | Importar do histórico do RESH |
atuin import nu | Importar do histórico do Nushell |
atuin import nu-hist-db | Importar 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
| Comando | Descrição |
|---|
atuin stats | Mostrar estatísticas do histórico |
atuin stats --count 20 | Mostrar top 20 comandos mais usados |
atuin stats --period day | Estatísticas de hoje |
atuin stats --period week | Estatísticas desta semana |
atuin stats --period month | Estatísticas deste mês |
atuin stats --period all | Estatísticas de todo o período |
atuin history count | Total 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
| Comando | Descrição |
|---|
~/.config/atuin/config.toml | Arquivo principal de configuração |
atuin default-config | Imprimir configuração padrão |
| Comando | Descriçã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 |
| Comando | Descrição |
|---|
style = "compact" | Usar estilo de interface compacto |
style = "full" | Usar estilo de interface completo |
style = "auto" | Auto-detectar baseado no terminal |
inline_height = 40 | Definir altura da busca inline |
show_preview = true | Mostrar painel de pré-visualização do comando |
show_help = true | Mostrar ajuda de atalhos de teclado |
show_tabs = true | Mostrar abas de modo de filtro |
max_preview_height = 4 | Má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
| Tecla | Descrição |
|---|
Ctrl + R | Abrir busca / alternar modo de busca |
↑ / ↓ | Navegar nos resultados |
Enter | Executar comando selecionado |
Tab | Inserir comando sem executar |
Escape | Cancelar busca |
Ctrl + D | Excluir entrada de histórico selecionada |
Alt + 1 | Alternar para filtro global |
Alt + 2 | Alternar para filtro por host |
Alt + 3 | Alternar para filtro por sessão |
Alt + 4 | Alternar para filtro por diretório |
Ctrl + U | Limpar consulta de busca |
Ctrl + W | Excluir palavra anterior |
| Comando | Descrição |
|---|
~/.local/share/atuin/history.db | Localização padrão do banco de dados |
| O banco de dados usa formato SQLite | Pode 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;"
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Use estilo compacto para terminais pequenos — Defina style = "compact" se você trabalha em terminais de painéis divididos com espaço vertical limitado.