Shell-Eingaben per KI generieren

Aus LinuxUser 09/2023

Shell-Eingaben per KI generieren

© Helder Almeida / 123RF.com

Gute Frage!

Shell Genie nutzt künstliche Intelligenz, um im Terminal eingegebene Fragen in Befehle umzuwandeln.

Künstliche Intelligenz, auch als KI oder AI (Artificial Intelligence) bezeichnet, beherrscht seit Monaten die IT-Welt und die Medien. Der Tonfall der Berichterstattung reicht dabei von “Beglücker der Menschheit” bis hin zu “Bedrohung des menschlichen Lebens”. Wir halten den Ball flach und berichten über das in MIT-lizenzierte Python-Tool Shell Genie, das mittels künstlicher Intelligenz versucht, das Leben auf der Shell einfacher zu gestalten [1].

Die Aufgabe des Kommandozeilenwerkzeugs Shell Genie besteht darin, Ihre Fragen in der Shell mit sofort ausführbaren Befehlen zu beantworten. Dazu stehen zwei verschiedene AI-Modelle zum Einsatz bereit. GPT 3.5 des Herstellers OpenAI liegt derzeit noch der aktuellen Version von ChatGPT zugrunde. Um es als Backend zu nutzen, benötigen Sie einen API-Key. Er kostet rund 20 Euro im Monat und deckt auch ChatGPT selbst ab. Der Autor von Shell Genie bietet mit Free Genie als Alternative ein kostenloses Modell an, das er selbst pflegt. Es lässt sich durch die Eingaben der Anwender trainieren, sofern Sie dem zustimmen.

Installation

Shell Genie holen Sie am einfachsten per Pipx auf die Platte, einen aus Pip weiterentwickelten Installer für den Python-Paketindex. Dazu installieren Sie zunächst über das Paketmanagement Ihrer Distribution das Paket pipx. Dann richten Sie Shell Genie mit dem Kommando pipx install shell-genie ein. Voraussetzung für die aktuelle Version 0.2.10 ist ein installiertes Python 3.10 oder höher. Die Installation erfolgt im Ordner ~/.local/bin/. Falls Sie danach eine Nachricht erhalten, dieses Verzeichnis liege nicht in Ihrem Pfad, dann beheben Sie das mit dem Aufruf pipx ensurepath. Anschließend öffnen Sie ein neues Terminal oder melden sich neu an.

Im nächsten Schritt initialisieren Sie die Anwendung mit dem Befehl shell-genie init. Dabei treffen Sie die bereits erwähnte Wahl bezüglich des Backends. Falls Sie sich für das kostenfreie Free Genie entscheiden, legen Sie zudem fest, ob Sie dem Entwickler Dylan Castillo Einblick in die gestellten Fragen und die ausgegebenen Befehle geben möchten, um das freie Backend weiter zu verbessern. Einschränkend gibt Castillo zu bedenken, dass er nicht dafür garantiert, dass der Server, auf dem Free Genie läuft, ständig erreichbar sein wird. Entscheidend für eine saubere Funktion ist die korrekte Erkennung des zugrunde liegenden Betriebssystems, denn Shell Genie beantwortet auch darauf spezifizierte Fragen (Abbildung 1).

Abbildung 1: Während der Initialisierung bestimmen Sie das gewünschte Backend. Damit Free Genie die korrekten Befehle erstellt, muss es zunächst das verwendete Betriebssystem ermitteln.

Abbildung 1: Während der Initialisierung bestimmen Sie das gewünschte Backend. Damit Free Genie die korrekten Befehle erstellt, muss es zunächst das verwendete Betriebssystem ermitteln.

Sprachbegabt

Die Syntax der Fragen an Shell Genie beginnt immer mit shell-genie ask, gefolgt von einer Aufgabenstellung in Anführungszeichen. Haben Sie bereits mit ChatGPT oder ähnlichen Frontends gearbeitet, kennen Sie das Prinzip: Je präziser die Fragestellung, desto besser fällt die Antwort aus. Sie können Fragen auf Deutsch oder Englisch formulieren, aber auch anderen Sprachen. Im Rahmen des Tests zeigte sich, dass korrekt in Englisch formulierte Fragen die beste Trefferquote erzielten. Meist beantwortete die KI aber auch auf Deutsch gestellte Fragen korrekt. Wenn Sie im Englischen nicht ganz so firm sind, bietet es sich an, einen Übersetzer wie DeepL Translate zu nutzen.

Unsere erste Frage an Shell Genie soll uns einen Befehl liefern, der alle Dateien mit der Endung .txt im aktuellen Verzeichnis findet (Listing 1, erste Zeile). Für die Antwort auf diese einfache Frage (zweite Zeile) brauchte die Software rund 3 Sekunden. Der angezeigte Befehl lässt sich direkt ausführen, indem Sie ihn durch einen Druck auf [Y] bestätigen.

Listing 1

Fragen und Antworten

$ shell-genie ask "finde alle Dateien mit der Erweiterung txt im aktuellen Verzeichnis"
Command: find . -maxdepth 1 -type f -name "*.txt"
$ shell-genie ask "finde alle Dateien mit der Erweiterung md im aktuellen Verzeichnis und seinen Unterverzeichnissen, die größer als 50kb sind"
Command: find . -type f -name "*md" -size +100k
$ shell-genie ask "finde alle Textdateien und ersetze die Anfangsbuchstaben A und B mit a und b"
Command: find . -type f -name "*.txt" -exec sed -i 's/^A/a/g;s/^B/b/g' {} +

Dabei zeigt sich, dass der erstellte Befehl korrekt war. Zu Lernzwecken fragt das System abschließend nach, ob der Befehl die gestellte Aufgabe erfüllen konnte. Mit Schreibfehlern kann das System nicht umgehen. Wir erhielten eine Fehlermeldung, als wir eine Leerstelle zwischen zwei Worten ausgelassen hatten (Abbildung 2).

Abbildung 2: Pr&auml;zise Fragestellung ist wichtig. Erst nach Hinzuf&uuml;gen des W&ouml;rtchens "nur" enthielt der resultierende Befehl die Einschr&auml;nkung <code>-maxdepth 1</code> auf das aktuelle Verzeichnis.

Abbildung 2: Präzise Fragestellung ist wichtig. Erst nach Hinzufügen des Wörtchens “nur” enthielt der resultierende Befehl die Einschränkung -maxdepth 1 auf das aktuelle Verzeichnis.

Die Github-Seite des Projekts erwähnt die Option --explain. Ans Ende der Frage angehängt, soll sie den resultierenden Befehl näher erläutern. Das funktionierte bei uns nicht. Unter Umständen klappt die entsprechende Anfrage lediglich mit der Bezahlversion von ChatGPT und übersteigt die Fähigkeiten von Free Genie.

Sie können dieselbe Frage auch mit zusätzlichen Bedingungen formulieren (Abbildung 3). Die Frage aus der dritten Zeile von Listing 1 bezieht Unterverzeichnisse ein und zeigt nur Dateien mit einem größeren Umfang als 1 MByte an. Auch hier war die Antwort von Shell Genie korrekt (Zeile 4). Die Antwortzeit hat sich durch die zusätzlichen Bedingungen nicht verändert.

Abbildung 3: Auch mit komplexeren Fragestellungen kommt Shell Genie klar, ohne dass sich die Antwortzeit durch die zus&auml;tzlichen Parameter verl&auml;ngert.

Abbildung 3: Auch mit komplexeren Fragestellungen kommt Shell Genie klar, ohne dass sich die Antwortzeit durch die zusätzlichen Parameter verlängert.

Es lassen sich auch mehrere Anweisungen kombinieren, etwa zum Finden und Ersetzen, wie bei der Frage aus Zeile 5 von Listing 1. Auch hier war der resultierende Befehl korrekt (Zeile 6).

Alias

Es ist recht umständlich, ständig shell-genie ask zu tippen. Da bietet es sich an, dafür ein Shell-Alias festzulegen. Wir haben uns für genie entschieden und dieses Alias in der Datei ~/.bashrc eingetragen (Listing 2, erste Zeile). Damit das Alias sofort greift, aktualisieren wir die Datei im Anschluss (zweite Zeile).

Listing 2

Alias eintragen

$ echo "alias genie='shell-genie ask'" >> ~/.bashrc
$ source ~/.bashrc

Grenzen

Von ChatGPT weiß man, dass es manchmal “halluziniert”, indem es Antworten frei erfindet. Dasselbe trifft theoretisch auch auf Shell Genie zu, allerdings aufgrund der Natur der Fragen weit weniger ausgeprägt. Trotzdem merkt der Entwickler an, dass durchaus inkorrekte Antworten vorkommen können. Bei unseren Tests war das allerdings nicht der Fall, alle Befehle waren korrekt und funktionierten.

Shell Genie beantwortet auch heikle Fragen wie die nach dem Löschen sämtlicher Daten auf der Festplatte (Abbildung 4) völlig ungeniert. Hier liegt es bei Ihnen, ob Sie den Befehl wirklich ausführen möchten. Können Sie nicht genau nachvollziehen, was ein Befehl bewirkt, spannen Sie am besten den Web-Dienst Explainshell [2] ein, der das Kommando dann in allen Einzelheiten erklärt. Shell Genie wartet in jedem Fall auf eine Bestätigung, bevor es ein Kommando ausführt.

Abbildung 4: Shell Genie beantwortet auch potenziell gef&auml;hrliche Fragen, etwa die nach dem L&ouml;schen der gesamten Festplatte.

Abbildung 4: Shell Genie beantwortet auch potenziell gefährliche Fragen, etwa die nach dem Löschen der gesamten Festplatte.

Fazit

Shell Genie erweist sich als hilfreiches Werkzeug für Anwender, die nicht häufig im Terminal arbeiten und deshalb nicht immer alle Befehle mit den nötigen Parametern kennen. Dabei sollten Sie beim derzeitigen Entwicklungsstand der KI-Backends ein gewisses Maß an Skepsis mitbringen. Auch wenn bei unseren Tests keine falschen Befehle vorkamen, bedeutet das nicht, dass die gelieferten Kommandos stets korrekt ausfallen. Ob es sich bei Shell Genie eher um Spielerei oder um ein ernsthaftes Werkzeug handelt, liegt wohl im Auge des Betrachters. (tle)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

2 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
rho chi
2 Jahre her

Ich würde mir wahrscheinlich keinen zweiten Artikel mehr hier kaufen, wenn ich nach dem Kauf eines Artikels, z.B. “Shell-Eingaben per KI generieren”, feststellen würde, dass das Programm nicht funktioniert, weil es vom Entwickler nicht mehr betreut wird. Zumindest sollte man dann darauf hinweisen, dass der Artikel eventuell nur noch von historischer Bedeutung ist, aber keinen praktischen Nutzen mehr hat. Danke.

Jörg Luther
2 Jahre her
Reply to  rho chi

Lieber rho chi, wiewohl ich durchaus verstehen kann, dass Sie sich über den Fehlkauf ärgern: Dass Entwickler ihre Open-Source-Projekte manchmal aufgeben, ist ein ganz normaler und recht häufiger Vorgang. LinuxUser gibt es seit fast 25 Jahren, und ständig nachzuprüfen und nachzuführen, ob eine getestete Software noch gepflegt wird oder inzwischen verwaist ist, ist schlicht aus Zeitgründen nicht machbar — dazu müssten wir ständig Tausende Artikel checken. Das betrifft auch andere Quellen: Schon kurzes Googeln fördert Dutzende Artikel — alle von Anfang 2023 — zu Shell Genie zutage. Kein einziger davon wurde entsprechend ergänzt, aus demselben Grund. Allerdings führt schon der… Mehr »

Nach oben