paint-brush
Comment ChatGPT gère les scripts Linux Bashpar@dclinton
17,174 lectures
17,174 lectures

Comment ChatGPT gère les scripts Linux Bash

par David Clinton6m2023/02/20
Read on Terminal Reader

Trop long; Pour lire

ChatGPT est un nouvel outil d'OpenAI qui peut être utilisé pour programmer en binôme avec un partenaire éminemment utile. Cet article examine comment ChatGPT gère les scripts Linux Bash. Vous pouvez regarder une version vidéo de cet article ici si vous souhaitez l'utiliser pour compléter votre apprentissage.
featured image - Comment ChatGPT gère les scripts Linux Bash
David Clinton HackerNoon profile picture

On entend beaucoup parler d'intelligence artificielle et de traitement du langage naturel – et notamment de la dernière version du GPT d'OpenAI – depuis des semaines.


La récente version de GPT 3.5, et plus particulièrement le tout nouvel outil ChatGPT, est définitivement un énorme bond en avant.


Vous avez peut-être entendu parler de personnes demandant à l'IA de rédiger des contrats immobiliers et des testaments, et même de générer du code de programmation. Cet article aborde l'outil d'un point de vue légèrement différent.


Vous pouvez regarder une version vidéo de cet article ici si vous souhaitez l'utiliser pour compléter votre apprentissage :




Expérimenter avec ChatGPT et Bash Scripting

J'ai décidé de voir comment ChatGPT gère les scripts Linux Bash. Mais (alerte spoiler !) en travaillant sur les suggestions de l'outil - à la fois du bon code et du mauvais code - j'ai commencé à réaliser qu'il y avait un avantage encore plus puissant qui me regardait en face : une opportunité de programmer en binôme avec un partenaire éminemment utile .


L'IA n'a finalement pas réussi à résoudre mon problème, mais la façon dont elle a échoué était absolument fascinante. Et regarder l'IA chercher de nouvelles réponses était absolument fou.

Première tentative - ChatGPT tente de résoudre le problème

Voyons donc comment tout cela s'est passé. Voici, plus ou moins, l'invite initiale que j'ai fournie à l'IA :

Écrivez-moi un script Bash qui demande l'URL d'une vidéo YouTube, puis utilise le programme yt-dlp pour télécharger à partir de cette URL. Le script devrait alors changer le nom du fichier en "myvideo.mp4"

Après quelques secondes, le ChatGPT m'a dit qu'un script arrivait. Voici à quoi ressemblait ce code :

 #!/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

L'IA sait évidemment ce que sont les scripts Bash et comment présenter le code. Il a même fait un excellent travail en commentant chaque ligne de code. L'IA sait comment inviter correctement l'utilisateur à entrer, puis comment importer la chaîne d'entrée dans une variable appelée url .


Il connaît également le programme yt-dlp et son fonctionnement, en lui fournissant correctement l'URL fournie. Ensuite, il a au moins tenté de renommer le fichier vidéo téléchargé en myvideo.mp4. Mais tout s'est en quelque sorte effondré lorsqu'il a supposé que le nom du fichier téléchargé serait video-filename.mp4. Oups.


Quoi qu'il en soit, l'IA m'a utilement montré comment créer le script à partir de son code, puis l'exécuter.

Deuxième tentative - ChatGPT se corrige

Ma première invite de suivi a souligné l'erreur évidente et, après quelques secondes, ChatGPT a admis que c'était faux et a proposé une amélioration.

Vous avez raison, le script que j'ai fourni ne fonctionnerait pas comme prévu car il suppose que la vidéo téléchargée sera enregistrée dans un fichier nommé video-filename.mp4 . Cependant, il n'est pas garanti que ce soit le cas. Pour réparer ça...

C'est juste époustouflant de voir comment l'IA est complètement engagée dans le processus ici. Il se souvient de son premier code, écoute et comprend ma plainte et réfléchit à une solution. Voici cette deuxième tentative :

 #!/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, donc je peux voir à quoi ressemble la solution. basename est un outil Linux qui peut supprimer les répertoires du système de fichiers et ne laisser que le nom de fichier réel.


Le problème est que la variable url ne contient pas de nom de fichier local, mais une adresse internet. Celui-ci ne fonctionnera certainement pas.

Troisième tentative - ChatGPT essaie à nouveau

J'ai donc réessayé, expliquant que ce n'était pas le bon outil pour le travail. Et ChatGPT fait un autre essai.

 #!/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

Cette fois, il montre qu'il s'est familiarisé avec la documentation yt-dlp, suggérant que nous utilisions l'argument -o pour donner un nom à la vidéo en cours de téléchargement, par rapport auquel basename devrait maintenant fonctionner. A chaque itération, l'IA me donne ce code mis à jour pour mon plaisir de copier-coller.


Bien sûr, cela n'allait pas marcher non plus. A la prochaine tentative, j'ai l'impression que l'IA est un peu désespérée.

Si au début vous ne réussissez pas... au moins vous apprendrez quelque chose

Je vais sauter la prochaine ou les deux tentatives suivantes, car nous avons rencontré un problème secondaire : les vidéos provenant de YouTube ne sont pas toujours des MP4, ce sont parfois des MKV ou même des WEBM. Cette incertitude pourrait perturber les noms de fichiers avec lesquels nous travaillons, j'ai donc demandé à ChatGPT de l'intégrer au code.

 #!/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

Lorsque j'ai signalé que cela ne fonctionnerait pas non plus, l'IA a commencé à devenir confuse. D'abord, il m'a dit que l'option -F attendait un format vidéo valide, mais que "mp4" n'était pas valide. Ensuite, il me donne des options valides, y compris "mp4".


Lorsque rien de ce que l'IA suggérait n'a fonctionné, il a abandonné, me conseillant de m'assurer que yt-dlp était bien installé sur ma machine et me montrant comment procéder.


J'ai pensé que c'était le bon moment pour abandonner. C'était un effort étonnamment bon et, même si cela n'a pas résolu le problème, cela m'a montré une syntaxe utile et m'a fait réfléchir.


Au cas où vous seriez intéressé, au fait, voici à quoi ressemblerait un script de travail réel.

 #!/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

Les deux premières lignes de code correspondent exactement à la suggestion de ChatGPT. Mais j'isole ensuite le nom de fichier en répertoriant tous les fichiers du répertoire actuel et en utilisant awk pour filtrer uniquement les noms de fichiers contenant mp4, webm ou mkv. (Cela suppose qu'il n'y aura jamais plus d'un fichier vidéo dans le répertoire à la fois.)


Le nom du fichier sera alors écrit dans la variable original_filename . J'utiliserai ensuite cette variable dans le cadre d'une commande move pour renommer le fichier myvideo.mp4 Pour autant que je sache, cela fonctionnera quel que soit le format réellement envoyé.

Emballer

L'intelligence artificielle n'est peut-être pas tout à fait prête pour les tâches de programmation dans le monde réel aujourd'hui, mais je ne voudrais pas parier qu'elle y arrivera demain... ou l'année prochaine.


En attendant, je recommanderais absolument d'utiliser des outils comme ChatGPT chaque fois que vous êtes confronté à une tâche de programmation difficile.


Deux esprits valent (presque) toujours mieux qu'un.


Image sélectionnée générée via l'inviteHackerNoon AI de "Un robot AI organisant une fête bash."


Outre ma chaîne YouTube (à laquelle vous pouvez vous abonner), mon site Web propose des liens vers toutes sortes de technologies disponibles sous forme d'articles, de livres et de cours.


Également publié ici .