paint-brush
Wie ChatGPT mit Linux Bash Scripting umgehtvon@dclinton
17,174 Lesungen
17,174 Lesungen

Wie ChatGPT mit Linux Bash Scripting umgeht

von David Clinton6m2023/02/20
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

ChatGPT ist ein neues Tool von OpenAI, das zur Paarprogrammierung mit einem äußerst hilfreichen Partner verwendet werden kann. In diesem Artikel wird untersucht, wie ChatGPT mit der Linux-Bash-Skripterstellung umgeht. Sie können sich hier eine Videoversion dieses Artikels ansehen, wenn Sie ihn als Ergänzung zum Lernen verwenden möchten.
featured image - Wie ChatGPT mit Linux Bash Scripting umgeht
David Clinton HackerNoon profile picture

Wir hören seit Wochen viel über künstliche Intelligenz und natürliche Sprachverarbeitung – und insbesondere über die neueste Version von OpenAIs GPT.


Die jüngste Veröffentlichung von GPT 3.5 und insbesondere das sehr neue ChatGPT-Tool ist definitiv ein großer Fortschritt.


Möglicherweise haben Sie von Leuten gelesen, die die KI bitten, Immobilienverträge und Testamente zu erstellen und sogar Programmiercode zu generieren. Dieser Artikel nähert sich dem Tool aus einer etwas anderen Perspektive.


Sie können sich hier eine Videoversion dieses Artikels ansehen, wenn Sie ihn als Ergänzung zum Lernen verwenden möchten:




Experimentieren mit ChatGPT und Bash Scripting

Ich beschloss, zu sehen, wie ChatGPT mit Linux-Bash-Skripten umgeht. Aber (Spoiler-Alarm!) Als ich die Vorschläge des Tools – sowohl guten als auch schlechten Code – durcharbeitete, wurde mir klar, dass es einen noch größeren Vorteil gab, der mir ins Gesicht starrte: die Möglichkeit, mit einem überaus hilfreichen Partner Paarprogrammierung zu betreiben .


Letztendlich konnte die KI mein Problem nicht lösen, aber die Art und Weise, wie sie scheiterte, war absolut faszinierend. Und zuzusehen, wie die KI nach neuen Antworten suchte, war absolut verrückt.

Erster Versuch – ChatGPT versucht, das Problem zu lösen

Schauen wir uns also an, wie alles passiert ist. Hier ist mehr oder weniger die erste Eingabeaufforderung, die ich der KI gegeben habe:

Schreiben Sie mir ein Bash-Skript, das nach der URL eines YouTube-Videos fragt und dann das Programm yt-dlp zum Herunterladen von dieser URL verwendet. Das Skript sollte dann den Dateinamen in „myvideo.mp4“ ändern.

Nach ein paar Sekunden teilte mir das ChatGPT mit, dass ein Skript kommen würde. So sah dieser Code aus:

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file yt-dlp $url # Change the downloaded video filename to "myvideo.mkv" mv video-filename.mp4 myvideo.mp4

Die KI weiß offensichtlich, was Bash-Skripte sind und wie Code dargestellt wird. Es hat sogar großartige Arbeit geleistet, jede Codezeile zu kommentieren. Die KI weiß, wie sie den Benutzer richtig zur Eingabe auffordert und wie sie dann die Eingabezeichenfolge in eine Variable namens url importiert.


Es weiß auch über das yt-dlp-Programm und seine Funktionsweise Bescheid und gibt ihm entsprechend die bereitgestellte URL weiter. Dann wurde zumindest versucht, die heruntergeladene Videodatei in myvideo.mp4 umzubenennen. Aber alles scheiterte, als angenommen wurde, dass der Download-Dateiname videodateiname.mp4 lauten würde. Hoppla.


Auf jeden Fall hat mir die KI hilfreich gezeigt, wie man aus ihrem Code das Skript erstellt und es dann ausführt.

Zweiter Versuch – ChatGPT korrigiert sich selbst

Meine erste Nachfrage machte mich auf den offensichtlichen Fehler aufmerksam, und nach ein paar Sekunden gab ChatGPT zu, dass es falsch war, und bot eine Verbesserung an.

Sie haben Recht, das von mir bereitgestellte Skript würde nicht wie erwartet funktionieren, da es davon ausgeht, dass das heruntergeladene Video in einer Datei mit dem Namen video-filename.mp4 gespeichert wird. Dies kann jedoch nicht garantiert werden. Um das zu beheben...

Es ist einfach umwerfend, wie die KI hier vollständig in den Prozess eingebunden ist. Es merkt sich seinen ersten Code, hört sich meine Beschwerde an, versteht sie und überlegt sich eine Lösung. Hier ist der zweite Versuch:

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file filename=$(basename $url) # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Ok, ich kann mir also vorstellen, dass die Lösung einigermaßen richtig aussah. basename ist ein Linux-Tool, das Dateisystemverzeichnisse entfernen kann und nur den tatsächlichen Dateinamen übrig lässt.


Das Problem besteht darin, dass die Variable url keinen lokalen Dateinamen, sondern eine Internetadresse enthält. Das wird definitiv nicht funktionieren.

Dritter Versuch – ChatGPT versucht es erneut

Also versuchte ich es noch einmal und erklärte, dass das nicht das richtige Werkzeug für den Job sei. Und ChatGPT versucht es noch einmal.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Extract the filename from the URL filename=$(basename $url) # Download the video using the yt-dlp tool and specify the filename yt-dlp -o $filename $url # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Dieses Mal zeigt es, dass es sich mit der yt-dlp-Dokumentation vertraut gemacht hat, und schlägt vor, dass wir das Argument -o verwenden, um dem herunterzuladenden Video einen Namen zu geben, mit dem basename nun funktionieren sollte. Bei jeder Iteration gibt mir die KI diesen aktualisierten Code für mein Vergnügen beim Ausschneiden und Einfügen.


Das würde natürlich auch nicht funktionieren. Beim nächsten Versuch habe ich das Gefühl, dass die KI etwas verzweifelt ist.

Wenn Sie zunächst keinen Erfolg haben, werden Sie zumindest etwas lernen

Ich werde den nächsten oder zweiten Versuch überspringen, da wir auf ein Nebenproblem gestoßen sind: Videos von YouTube sind nicht immer MP4s, sondern manchmal MKVs oder sogar WEBMs. Diese Unsicherheit könnte sich auf die Dateinamen auswirken, mit denen wir arbeiten. Deshalb habe ich ChatGPT gebeten, dies in den Code zu integrieren.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Extract the filename from the URL filename=$(basename $url) # Download the video using the yt-dlp tool and specify the filename yt-dlp -F mp4 -O $filename $url # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Als ich berichtete, dass auch das nicht funktionieren würde, geriet die KI in Verwirrung. Zuerst wurde mir mitgeteilt, dass die Option -F ein gültiges Videoformat erwartet, „mp4“ jedoch nicht gültig sei. Dann gibt es mir gültige Optionen, einschließlich „mp4“.


Als nichts funktionierte, was die KI vorschlug, gab sie auf und riet mir, sicherzustellen, dass yt-dlp tatsächlich auf meinem Computer installiert war, und zeigte mir, wie das geht.


Ich dachte, das wäre ein guter Zeitpunkt, um aufzugeben. Es war ein überraschend guter Versuch, und auch wenn es das Problem nicht löste, zeigte es mir doch eine nützliche Syntax und regte mich zum Nachdenken an.


Falls es Sie interessiert: Hier sehen Sie übrigens, wie ein tatsächlich funktionierendes Skript aussehen würde.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file original_filename=$(ls | awk '/mp4/ || /webm/ || /mkv/') # Change the downloaded video filename to "myvideo.mkv" mv "$original_filename" /home/ubuntu/vids/myvideo.mp4

Die ersten beiden Codezeilen entsprechen genau den Vorschlägen von ChatGPT. Aber dann isoliere ich den Dateinamen, indem ich alle Dateien im aktuellen Verzeichnis aufliste und mit awk nur nach Dateinamen filtere, die entweder mp4, webm oder mkv enthalten. (Dabei wird davon ausgegangen, dass sich nie mehr als eine Videodatei gleichzeitig im Verzeichnis befindet.)


Der Dateiname wird dann in die Variable original_filename geschrieben. Ich verwende diese Variable dann als Teil eines move , um die Datei myvideo.mp4 umzubenennen. Soweit ich weiß, funktioniert das unabhängig davon, welches Format tatsächlich gesendet wurde.

Zusammenfassung

Künstliche Intelligenz ist heute vielleicht noch nicht ganz bereit für reale Programmieraufgaben, aber ich möchte nicht darauf wetten, dass sie morgen oder irgendwann im nächsten Jahr soweit sein wird.


In der Zwischenzeit würde ich Ihnen jedoch unbedingt empfehlen, sich immer dann mit Tools wie ChatGPT zu beschäftigen, wenn Sie vor einer anspruchsvollen Programmieraufgabe stehen.


Zwei Köpfe sind (fast) immer besser als einer.


Ausgewähltes Bild, generiert überdie KI-Eingabeaufforderung von HackerNoon : „Ein KI-Roboter veranstaltet eine Party.“


Neben meinem YouTube-Kanal (den Sie abonnieren können) verlinkt meine Website auf alle Arten von Technologiegutheiten, die in Form von Artikeln, Büchern und Kursen verfügbar sind.


Auch hier veröffentlicht.