Shell-Genie hilft am Terminal

Di, 7. Februar 2023, Ralf Hersel

Shell Genie ist ein neues Kommandozeilentool, mit dem man in einfachem Englisch nachfragen kann, wie verschiedene Aufgaben auszuführen sind, und das einem den benötigten Shell-Befehl liefert. Um die Befehle zu generieren, verwendet es OpenAIs GPT-3 oder Free Genie, ein kostenloses Backend, das vom Shell Genie Entwickler zur Verfügung gestellt wird.

Bildquelle: DALL-E 2

Sobald Shell Genie einen Befehl anzeigt, fragt es, ob man ihn ausführen möchte. An dieser Stelle ist es ganz wichtig, den Befehl zu verstehen, bevor man ihn ausführt.

Bei meinen Tests antwortete Shell Genie mit brauchbaren Kommandos, die eher durch Detailreichtum als durch Eleganz auffielen. Falls die Vorschläge falsch waren, lag es meist an einer ungenauen Fragestellung. Ich habe das Werkzeug mit dem Free Genie Backend verwendet, weil meine OpenAI-Credits abgelaufen sind. Bei der freien Variante kann man Rückmeldung geben, um das Modell zu verbessern.

Shell Genie kann mit pipx installiert werden, einem Werkzeug zur Installation und Ausführung von Python-Anwendungen in isolierten Umgebungen. Das Genie erfordert Python 3.10 oder neuer. So geht die Installation unter Manjaro:

pamac install pipx
pipx install shell-genie
shell-genie init

Bei der Initialisierung trifft man die Wahl zwischen GPT3 und dem Free Genie Backend. Für erstere Auswahl benötigt man einen OpenAI API Schlüssel. Ausserdem sind ein paar Fragen zum Betriebssystem zu beantworten und ob man Feedback geben möchte. Es wird darauf hingewiesen, dass die Eingaben gespeichert werden. Dann kann man mit der Fragestunde beginnen: shell-genie ask "ein englischer Satz". Hier sind ein paar Beispiele:

shell-genie ask "list all directories"
Command: ls -l | grep "^d"
Do you want to run the command? [y/n]: y
drwxr-xr-x  2 ralf ralf 4096  4. Jan 13:56 Bilder
drwxr-xr-x  3 ralf ralf 4096  6. Feb 14:21 delme
drwxr-xr-x  5 ralf ralf 4096  6. Feb 14:22 dev
drwxr-xr-x  2 ralf ralf 4096 10. Jan 10:38 Dokumente
drwxr-xr-x  3 ralf ralf 4096 30. Jan 14:17 Downloads
drwxr-xr-x  3 ralf ralf 4096  5. Jan 16:24 Musik
drwxr-xr-x 11 ralf ralf 4096  7. Feb 08:27 Nextcloud
drwxr-xr-x  2 ralf ralf 4096  4. Jan 13:56 Öffentlich
drwxr-xr-x  2 ralf ralf 4096  4. Jan 13:56 Schreibtisch
drwxr-xr-x  2 ralf ralf 4096  4. Jan 13:56 Videos
drwxr-xr-x  2 ralf ralf 4096  4. Jan 13:56 Vorlagen
Did the command work? [y/n]:

Es darf auch komplizierter sein:

shell-genie ask "replace all instances of ^ with / in all .py files in the current folder that have been modified in the last 2 days"
Command: find . -name "*.py" -mtime -2 -exec sed -i 's/\^/\//g' {} \;

Gestern Abend haben wir in unserem HELP-Raum die Frage diskutiert, warum nmap keine Namen von Geräten im LAN mehr anzeigt. Leider wusste Shell Genie darauf keine Antwort, aber immerhin den bereits bekannten Befehl:

shell-genie ask "list all devices in local area network with ip addresses and names"
Command: nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip,$3}'

Quelle: https://github.com/dylanjcastillo/shell-genie

Tags

Terminal, Befehl, Kommando, ChatGPT