shell history’de tekrarlanan komutları bulup alias/workflow’a dönüştüren bir CLI yaptım
(github.com/bssm-oss)Birkaç gün içinde yaptığım küçük bir CLI yan projesini paylaşmak istiyorum.
shell alias’ları iyidir. Hızlıdır, basittir ve ele çabuk alışır.
Ama alias’ları durmadan .zshrc içine gömmek şeklindeki yaklaşımın uzun ömürlü olmadığını düşündüm.
İlk başta sorun olmuyor.
alias gs='git status -sb'
alias dc='docker compose'
Sorun, bunun sürekli büyümesi.
git alias’ları, docker alias’ları, pnpm alias’ları, ssh alias’ları ve proje bazlı alias’lar tek bir dosyada birikiyor; bir süre sonra ben bile neyi tanımladığımı unutuyorum.
alias’ları üretkenlik için yapmıştım ama bir noktadan sonra hafıza testine dönüşüyor.
Daha da yazık olan şey shell history idi.
Tekrar tekrar yazdığım komutlar ve komut dizileri zaten history içinde birikmiş durumda. Ama çoğu shell bunu sadece geçmiş kayıt olarak bırakıyor.
Bu yüzden ganbatte’yi yaptım. Binary adı gnb.
ganbatte, shell history’yi analiz edip tekrarlanan komutları alias adayı, tekrarlanan komut dizilerini ise workflow adayı olarak öneren bir CLI.
brew install bssm-oss/tap/ganbatte
gnb suggest # Tekrarlanan komutları ve workflow adaylarını bul
gnb migrate # Mevcut shell alias’larını içe aktar
gnb # TUI içinde gezin
Örneğin şöyle görünüyor.
=== 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.
Atuin “benim ne yazdığımı” iyi hatırlıyorsa, ganbatte daha çok “benim tekrar tekrar yazdıklarımı” sürekli kullanılabilir komutlara dönüştürmeye yakın duruyor.
Mevcut alias’ları da içe aktarabiliyor.
gnb migrate
Argümansız çalıştırdığınızda TUI içinde alias ve workflow arayıp çalıştırabilirsiniz.
gnb
Global alias’lar ile proje bazlı .ganbatte.toml dosyalarını ayrı kullanabiliyorsunuz; riskli komutlara onay istemi de eklenebiliyor.
[alias.nuke]
cmd = "git reset --hard HEAD"
confirm = true
Önemli nokta, her şeyin tamamen yerelde çalışması.
shell history veya takip log’larını sunucuya göndermiyor. Telemetry, hesap, cloud sync ya da AI ile komut üretimi de yok.
Henüz küçük ve biraz kaba bir yan proje ama terminalde her gün aynı komutları tekrar tekrar yazanlar için etkisini hemen hissettirebileceğini düşündüğümden paylaşmak istedim.
3 yorum
Teşekkür ederim
Fikir güzel.
Teşekkür ederim