J’ai créé un CLI qui repère les commandes répétées dans l’historique du shell pour les transformer en alias/workflows
(github.com/bssm-oss)Je partage un petit side project CLI que j’ai développé sur quelques jours.
Les alias shell, c’est bien. C’est rapide, simple, et on s’y habitue vite.
Mais je pensais que la méthode consistant à entasser des alias dans .zshrc ne tenait pas sur la durée.
Au début, ça va.
alias gs='git status -sb'
alias dc='docker compose'
Le problème, c’est que ça continue de s’accumuler.
Des alias git, des alias docker, des alias pnpm, des alias ssh, des alias par projet finissent tous dans un seul fichier, et plus tard j’oublie même ce que j’y ai déjà créé.
Les alias sont clairement faits pour améliorer la productivité, mais à un moment, ça se transforme en test de mémoire.
Ce qui me semblait encore plus dommage, c’était l’historique du shell.
Les commandes et séquences de commandes que je tape de manière répétée sont déjà stockées dans l’historique. Pourtant, la plupart des shells les laissent simplement comme de vieux enregistrements.
J’ai donc créé ganbatte. Le nom du binaire est gnb.
ganbatte est un CLI qui analyse l’historique du shell pour recommander les commandes répétées comme candidats d’alias, et les séquences de commandes répétées comme candidats de workflow.
brew install bssm-oss/tap/ganbatte
gnb suggest # trouver les commandes répétées et les candidats de workflow
gnb migrate # importer les alias shell existants
gnb # parcourir dans le TUI
Par exemple, cela peut ressembler à ceci.
=== 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.
Si Atuin se charge bien de se souvenir de « ce que j’ai saisi », ganbatte se rapproche davantage d’un outil qui transforme « ce que je saisis de façon répétée » en commandes réutilisables en continu.
Il peut aussi importer les alias existants.
gnb migrate
Si vous l’exécutez sans argument, vous pouvez rechercher et lancer des alias et des workflows dans le TUI.
gnb
Il est possible de séparer les alias globaux et un .ganbatte.toml propre à chaque projet, et d’ajouter une invite de confirmation pour les commandes dangereuses.
[alias.nuke]
cmd = "git reset --hard HEAD"
confirm = true
Le point important, c’est que tout fonctionne en local.
L’historique du shell et les track logs ne sont pas envoyés à un serveur. Il n’y a ni télémétrie, ni compte, ni synchronisation cloud, ni génération de commandes par IA.
C’est encore un side project modeste et un peu brut, mais si vous retapez tous les jours les mêmes commandes dans le terminal, je pense que l’intérêt se fera sentir immédiatement, donc je le partage.
3 commentaires
Merci
C’est une bonne idée.
Merci.