4 pontos por justn 26 일 전 | 3 comentários | Compartilhar no WhatsApp

Quero compartilhar um pequeno projeto paralelo de CLI que fiz ao longo de alguns dias.

Alias de shell são ótimos. São rápidos, simples e ficam naturais no dia a dia.

Mas achei que continuar enfiando alias no .zshrc não era algo sustentável no longo prazo.

No começo, tudo bem.

alias gs='git status -sb'  
alias dc='docker compose'  

O problema é que isso só vai crescendo.

Aliases de git, docker, pnpm, ssh e aliases específicos de projeto vão se acumulando em um único arquivo, e depois de um tempo eu nem lembro mais o que já criei.
Alias claramente existe para aumentar a produtividade, mas em algum momento vira um teste de memória.

O que eu achava ainda mais desperdiçado era o histórico do shell.

Os comandos e sequências de comandos que eu digito repetidamente já estão acumulados no histórico. Mas a maioria dos shells simplesmente deixa isso como um registro do passado.

Foi por isso que criei o ganbatte. O nome do binário é gnb.

ganbatte é um CLI que analisa o histórico do shell e recomenda comandos repetidos como candidatos a alias, e sequências de comandos repetidas como candidatas a workflow.

brew install bssm-oss/tap/ganbatte  
  
gnb suggest   # encontrar comandos repetidos e candidatos a workflow  
gnb migrate   # importar aliases existentes do shell  
gnb           # explorar pela TUI  

Por exemplo, algo assim.

=== Alias Suggestions ===  
  1. c = claude  
     Used 5 times · saves ~25 keystrokes  
  
=== Workflow Suggestions ===  
  1. git-add  
     Step 1: git add .  
     Step 2: git commit -m "update"  
     Step 3: git push  
  
Applying all suggestions would save ~89 keystrokes based on your history.  

Se o Atuin é ótimo para lembrar “o que eu digitei”, o ganbatte está mais para transformar “o que eu digito repetidamente” em comandos reutilizáveis.

Também dá para importar aliases existentes.

gnb migrate  

Se você executar sem argumentos, pode pesquisar e executar aliases e workflows pela TUI.

gnb  

Também é possível separar aliases globais e .ganbatte.toml por projeto, e adicionar prompts de confirmação para comandos perigosos.

[alias.nuke]  
cmd = "git reset --hard HEAD"  
confirm = true  

O ponto importante é que tudo roda localmente.

O histórico do shell e os logs de rastreamento não são enviados para nenhum servidor. Também não há telemetry, conta, cloud sync nem geração de comandos por IA.

Ainda é um projeto paralelo pequeno e meio bruto, mas achei que valia compartilhar porque quem repete os mesmos comandos todos os dias no terminal provavelmente vai sentir o valor disso na hora.

GitHub: https://github.com/bssm-oss/ganbatte

3 comentários

 
recast7838 19 일 전

Obrigado

 
runableapp 26 일 전

A ideia é boa.

 
justn 25 일 전

Obrigado.