Um logger de comandos de terminal que registra cada comando em todas as suas sessões de shell diretamente em um banco SQLite.
O que é o shellmemory?
shellmemory é um hook de shell que registra silenciosamente cada comando que você executa — em todas as suas sessões de terminal — em um banco de dados SQLite local. É um histórico de shell persistente e pesquisável que vai além do HISTFILE nativo do shell.
Seus comandos são registrados com timestamp, marcados com o diretório de trabalho e consultáveis via SQL ou um comando de busca integrado. Nada é enviado a lugar nenhum. Tudo fica local.
O Problema que Resolve
O histórico de shell é frágil. Por padrão, a maioria dos shells mantém um arquivo de texto plano com um número limitado de linhas. O histórico é truncado, sobrescrito quando múltiplas sessões fecham em paralelo, ou simplesmente perdido ao trocar de máquina.
O shellmemory substitui o arquivo de texto por um banco de dados real: cada comando, de cada sessão, preservado indefinidamente e consultável sem aprender novas ferramentas.
Funcionalidades Principais
Captura automática
Instale o hook uma vez e cada comando é registrado automaticamente. Sem necessidade de invocação manual.
# Hook dispara após cada comando
PROMPT_COMMAND="shellmemory log" # bash
precmd() { shellmemory log } # zshMetadados por entrada
Cada comando registrado inclui:
| Campo | Descrição |
|---|---|
command | A string completa do comando |
timestamp | Data e hora em ISO 8601 |
exit_code | Código de retorno do comando |
cwd | Diretório de trabalho no momento da execução |
session_id | UUID por sessão de terminal |
hostname | Hostname da máquina |
Pesquisa
shellmemory search "docker" # busca de texto completo
shellmemory search --dir ~/projects # filtrar por diretório
shellmemory search --failed # apenas comandos com falha (exit_code != 0)
shellmemory search --since "7 days" # busca com limite de tempoExportação e estatísticas
shellmemory stats # resumo: total de comandos, top comandos
shellmemory export --format csv # exportar para CSV
shellmemory export --format json # exportar para JSONInstalação
# Clonar e fazer source do hook
git clone https://github.com/fernandobelotto/shellmemory ~/.shellmemory
echo 'source ~/.shellmemory/shellmemory.sh' >> ~/.bashrc # ou .zshrcO shellmemory requer que sqlite3 esteja disponível no seu PATH.
Stack Tecnológica
- Shell (compatível com Bash/Zsh) — o hook e a CLI são scripts shell puros
- SQLite — banco de dados embutido, sem dependências além do binário sqlite3
- Migrações de schema rodam automaticamente no primeiro uso
Filosofia de Design
O shellmemory é intencionalmente minimalista. Não tenta ser um substituto completo de shell ou uma ferramenta de sincronização em nuvem. Captura comandos localmente, armazena em um formato consultável com qualquer ferramenta SQL, e sai do caminho. O arquivo de banco de dados é seu — faça backup, consulte com DBeaver, filtre com jq, faça o que quiser com ele.