paint-brush
ChatGPT が Linux Bash スクリプトを処理する方法@dclinton
18,443 測定値
18,443 測定値

ChatGPT が Linux Bash スクリプトを処理する方法

David Clinton6m2023/02/20
Read on Terminal Reader

長すぎる; 読むには

ChatGPT は、非常に役立つパートナーとのペアプログラミングに使用できる OpenAI の新しいツールです。この記事では、ChatGPT が Linux Bash スクリプトを処理する方法について説明します。学習を補足するために使用したい場合は、この記事のビデオ バージョンをここで見ることができます。
featured image - ChatGPT が Linux Bash スクリプトを処理する方法
David Clinton HackerNoon profile picture

私たちは、人工知能と自然言語処理、特に OpenAI の GPT の最新バージョンについて、数週間にわたって多くのことを聞いてきました。


GPT 3.5 の最近のリリース、特に非常に新しい ChatGPT ツールは、間違いなく大きな飛躍です。


AI に不動産の契約書や遺言書の作成、さらにはプログラミング コードの生成を依頼する人について読んだことがあるかもしれません。この記事では、少し異なる視点からこのツールにアプローチします。


学習を補足するために使用したい場合は、この記事のビデオ バージョンをここで見ることができます。




ChatGPT と Bash スクリプトの実験

ChatGPT が Linux Bash スクリプトを処理する方法を確認することにしました。しかし (ネタバレ注意!) ツールの提案 (良いコードと悪いコードの両方) を調べていくと、さらに強力な利点があることに気付き始めました。 .


AI は最終的に私の問題を解決できませんでしたが、AI が失敗した方法は非常に魅力的でした。そして、AI が新しい答えを探しているのを見るのは本当にクレイジーでした。

最初の試行 – ChatGPT は問題を解決しようとします

それでは、すべてがどのように起こったか見てみましょう。これは、多かれ少なかれ、私が AI に提供した最初のプロンプトです。

YouTube ビデオの URL を要求し、yt-dlp プログラムを使用してその URL からダウンロードする Bash スクリプトを作成してください。スクリプトは、ファイル名を「myvideo.mp4」に変更する必要があります。

数秒後、ChatGPT はスクリプトが来ることを教えてくれました。そのコードは次のようになります。

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

AI は明らかに、Bash スクリプトとは何か、コードの表示方法を知っています。コードの各行にコメントを付けるのも素晴らしい仕事でした。 AI は、ユーザーに適切に入力を促す方法と、入力文字列をurlという変数にインポートする方法を知っています。


また、yt-dlp プログラムとその動作についても認識しており、提供された URL を適切にフィードします。次に、少なくともダウンロードしたビデオ ファイルの名前を myvideo.mp4 に変更しようとしました。しかし、ダウンロード ファイル名が video-filename.mp4 であると想定したとき、すべてがうまくいきませんでした。おっと。


とにかく、AI はコードからスクリプトを作成して実行する方法を教えてくれました。

2 回目の試行 – ChatGPT は自己修正します

最初のフォローアップ プロンプトで明らかな間違いが指摘され、数秒後、ChatGPT はそれが間違っていることを認め、改善を提案しました。

そのとおりです。私が提供したスクリプトは、ダウンロードしたビデオがvideo-filename.mp4という名前のファイルに保存されることを前提としているため、期待どおりに動作しません。ただし、これが保証されるわけではありません。これを修正するには...

AIがここでプロセスに完全に関与していることは、驚くべきことです.最初のコードを覚えていて、私の不満を聞いて理解し、解決策を考えてくれます。 2回目の試みは次のとおりです。

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

わかりました。では、ソリューションがどのように適切に見えるかを確認できます。 basenameは、ファイル システム ディレクトリを取り除き、実際のファイル名だけを残すことができる Linux ツールです。


問題は、変数urlローカル ファイル名ではなく、インターネット アドレスが含まれていることです。こいつは絶対にうまくいかない。

3 回目の試行 – ChatGPT による再試行

それで、それが仕事に適したツールではないことを説明して、もう一度試しました。そして、ChatGPT はもう一度試してみます。

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

今回は、yt-dlp のドキュメントに慣れていることを示しており、 -o引数を使用してダウンロード中のbasenameに名前を付けることを示唆しています。繰り返しごとに、AI はこの更新されたコードを提供してくれ、切り取りと貼り付けを楽しむことができます。


もちろん、それもうまくいきませんでした。次の試みでは、AI が少し必死になっているような気がします。

最初は成功しなくても...少なくとも何かを学ぶことができます

副次的な問題が発生したため、次の試行をスキップします。YouTube からのビデオは常に MP4 であるとは限らず、MKV や WEBM である場合もあります。その不確実性は、私たちが取り組んでいるファイル名を台無しにする可能性があるため、ChatGPT にコードに組み込むように依頼しました。

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

それもうまくいかないことを報告したとき、AIは混乱し始めました。最初に、 -Fオプションは有効なビデオ形式を期待していたが、「mp4」は無効であることがわかりました。次に、「mp4」を含む有効なオプションが表示されます。


AI が提案したことが何も機能しない場合、AI はあきらめ、yt-dlp が実際に私のマシンにインストールされていることを確認するようアドバイスし、その方法を教えてくれました。


諦めるには良い時期だと思いました。これは驚くほど良い取り組みであり、問題は解決しませんでしたが、役に立つ構文をいくつか示して考えさせられました。


ちなみに、実際に動作するスクリプトは次のようになります。

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

コードの最初の 2 行は、ChatGPT が提案したとおりです。しかし、現在のディレクトリ内のすべてのファイルをリストし、 awkを使用して mp4、webm、または mkv のいずれかを含むファイル名のみをフィルタリングすることにより、ファイル名を分離します。 (これは、ディレクトリ内に一度に複数のビデオ ファイルが存在しないことを前提としています。)


ファイル名は、 original_filename変数に書き込まれます。次に、その変数をmoveコマンドの一部として使用して、ファイルの名前をmyvideo.mp4に変更します。私が知る限り、実際に送信された形式に関係なく機能します。

まとめ

今日、人工知能は現実世界のプログラミング タスクに対応する準備が整っていない可能性がありますが、明日、または来年中に実現することに賭けたくはありません。


それまでの間、困難なプログラミング タスクに直面したときはいつでも、ChatGPT のようなツールを使用することを強くお勧めします。


2 つの心は (ほとんど) 常に 1 つよりも優れています。


HackerNoon AIプロンプトによって生成された「An AI robot throwing a bash party」というアイキャッチ画像。


私の YouTube チャンネル(購読できます) の他に、私の Web サイトは、記事、本、およびコースとして利用できるあらゆる種類の優れたテクノロジにリンクしています。


ここにも掲載されています。