Pular para o conteúdo
Open Sourcept
shellmemory

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 }     # zsh

Metadados por entrada

Cada comando registrado inclui:

CampoDescrição
commandA string completa do comando
timestampData e hora em ISO 8601
exit_codeCódigo de retorno do comando
cwdDiretório de trabalho no momento da execução
session_idUUID por sessão de terminal
hostnameHostname 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 tempo

Exportaçã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 JSON

Instalação

# Clonar e fazer source do hook
git clone https://github.com/fernandobelotto/shellmemory ~/.shellmemory
echo 'source ~/.shellmemory/shellmemory.sh' >> ~/.bashrc  # ou .zshrc

O 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.