Saya membuat CLI yang menemukan perintah berulang dari shell history lalu mengubahnya menjadi alias/workflow
(github.com/bssm-oss)Saya ingin membagikan side project CLI kecil yang saya buat selama beberapa hari.
alias shell itu bagus. Cepat, sederhana, dan terasa alami di tangan.
Tapi saya merasa cara terus menumpuk alias ke dalam .zshrc bukanlah pendekatan yang bertahan lama.
Awalnya tidak masalah.
alias gs='git status -sb'
alias dc='docker compose'
Masalahnya, jumlahnya terus bertambah.
alias git, alias docker, alias pnpm, alias ssh, dan alias per proyek menumpuk di satu file, lalu belakangan saya bahkan lupa apa saja yang pernah saya buat.
Padahal alias jelas dibuat untuk produktivitas, tetapi pada titik tertentu malah berubah menjadi tes ingatan.
Hal yang lebih disayangkan adalah shell history.
Perintah dan urutan perintah yang saya ketik berulang kali sebenarnya sudah menumpuk di dalam history. Namun kebanyakan shell membiarkannya hanya sebagai catatan masa lalu.
Karena itu saya membuat ganbatte. Nama binarinya adalah gnb.
ganbatte adalah CLI yang menganalisis shell history untuk merekomendasikan perintah berulang sebagai kandidat alias, dan urutan perintah yang berulang sebagai kandidat workflow.
brew install bssm-oss/tap/ganbatte
gnb suggest # cari perintah berulang dan kandidat workflow
gnb migrate # impor alias shell yang sudah ada
gnb # jelajahi di TUI
Kurang lebih seperti ini contohnya.
=== 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.
Kalau Atuin unggul dalam mengingat “apa yang saya ketik”, maka ganbatte lebih dekat ke alat yang mengubah “apa yang saya ketik berulang kali” menjadi perintah yang bisa terus dipakai.
Alias yang sudah ada juga bisa diimpor.
gnb migrate
Jika dijalankan tanpa argumen, Anda bisa mencari dan menjalankan alias serta workflow di TUI.
gnb
Anda bisa memisahkan alias global dan .ganbatte.toml per proyek, dan juga menambahkan prompt konfirmasi untuk perintah berbahaya.
[alias.nuke]
cmd = "git reset --hard HEAD"
confirm = true
Hal pentingnya adalah semuanya berjalan secara lokal.
Shell history maupun track log tidak dikirim ke server. Tidak ada telemetry, akun, cloud sync, maupun pembuatan perintah dengan AI.
Ini masih side project yang kecil dan agak kasar, tetapi saya membagikannya karena rasanya manfaatnya akan langsung terasa bagi siapa pun yang setiap hari berulang kali mengetik perintah yang sama di terminal.
3 komentar
Terima kasih
Idenya bagus.
Terima kasih