4 Punkte von justn 26 일 전 | 3 Kommentare | Auf WhatsApp teilen

Ich möchte ein kleines CLI-Sideproject teilen, an dem ich ein paar Tage gearbeitet habe.

Shell-Aliasse sind großartig. Sie sind schnell, einfach und gehen leicht in Fleisch und Blut über.

Aber ich dachte, dass die Methode, immer weiter Aliasse in .zshrc hineinzustopfen, auf Dauer nicht trägt.

Am Anfang ist das noch okay.

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

Das Problem ist, dass es immer mehr werden.

Git-Aliasse, Docker-Aliasse, pnpm-Aliasse, SSH-Aliasse und projektspezifische Aliasse landen alle in einer Datei, und später vergesse ich sogar, was ich mir überhaupt angelegt habe.
Aliasse sind eindeutig für Produktivität gedacht, aber irgendwann werden sie zu einem Gedächtnistest.

Noch bedauerlicher war die Shell-History.

Die Befehle und Befehlsfolgen, die ich immer wieder eintippe, sind dort bereits gespeichert. Aber die meisten Shells behandeln das einfach nur als vergangenes Protokoll.

Deshalb habe ich ganbatte gebaut. Der Name des Binaries ist gnb.

ganbatte ist ein CLI, das die Shell-History analysiert und wiederholte Befehle als Alias-Kandidaten sowie wiederkehrende Befehlsfolgen als Workflow-Kandidaten empfiehlt.

brew install bssm-oss/tap/ganbatte  
  
gnb suggest   # Wiederholte Befehle und Workflow-Kandidaten finden  
gnb migrate   # Vorhandene Shell-Aliasse importieren  
gnb           # Im TUI erkunden  

Zum Beispiel sieht das so aus.

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

Wenn Atuin sich gut daran erinnert, „was ich eingegeben habe“, dann ist ganbatte eher darauf ausgerichtet, „was ich wiederholt eingebe“ in Befehle zu verwandeln, die ich weiterverwenden kann.

Auch bestehende Aliasse lassen sich importieren.

gnb migrate  

Wenn man es ohne Argumente ausführt, kann man im TUI Aliasse und Workflows suchen und ausführen.

gnb  

Man kann globale Aliasse und projektspezifische .ganbatte.toml getrennt verwenden, und für gefährliche Befehle lässt sich ein Bestätigungs-Prompt hinzufügen.

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

Wichtig ist, dass alles lokal läuft.

Weder Shell-History noch Track-Logs werden an einen Server gesendet. Es gibt keine Telemetrie, keine Konten, keine Cloud-Synchronisierung und auch keine KI-generierte Befehlserstellung.

Es ist noch ein kleines und etwas grobes Sideproject, aber ich wollte es teilen, weil Menschen, die täglich im Terminal dieselben Befehle wiederholt eingeben, den Nutzen wahrscheinlich sofort spüren werden.

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

3 Kommentare

 
recast7838 19 일 전

Danke

 
runableapp 26 일 전

Die Idee ist gut.

 
justn 25 일 전

Danke.