【プロンプト解説】ChatGPTを使ってシェルスクリプトを作成する

「シェルスクリプトの作成で詰まってしまった…」「ChatGPTでシェルスクリプトを効率的に作成できるの?」 そう思う方も多いのではないでしょうか。

実は、ChatGPTを利用すれば、シェルスクリプトの作成をサポートしてくれます。

今回PROMPTYでは、ChatGPTを用いてシェルスクリプトを作成する方法を例文を使ってご紹介します。

ChatGPTでスクリプトを作成するメリット

1. コーディングのハードルを下げる
ChatGPTを利用すれば、初心者から経験者まで、誰もが簡単にコードのサポートを受けることができます。具体的な指示や質問を入力するだけで、適切なコードのサンプルや提案を受け取ることができるため、新しい言語や技術の学習障壁が大きく低減します。

2. プログラマーの負担が減る
ルーチンなコーディング作業やデバッグの際に、ChatGPTを参照することで、プログラマーはより高度なタスクに集中することができます。また、思いつかない解決策や新しい視点を提供してくれるため、コーディングのストレスも軽減されます。

3. コーディング速度の向上
ChatGPTの助けを借りることで、一般的な問題に対する迅速な回答やコードのサンプルが得られます。これにより、開発のペースを速めることができ、タスクの効率化が実現します。

4. 多様なプログラミング言語への対応
ChatGPTは多種多様なプログラミング言語に精通しています。このため、異なるプロジェクトや言語間の切り替えが頻繁に必要な場面でも、一貫したサポートを受けることができます。

5. コード品質の向上
ChatGPTによるフィードバックや提案を取り入れることで、より最適化された、効率的なコードを書く手助けを受けることができます。また、一般的なミスやバグを未然に防ぐヒントやアドバイスも得られるため、全体としてのコード品質が向上します。

ChatGPTでコーディングをするメリットやコツについて、こちらの記事で詳しく解説しています。

関連記事

はじめに ChatGPTを使うことで、日々のコーディング作業の負担を減らし、効率を大きく引き上げることができます。 今回Promptyでは、コーディングのお供にChatGPTを使うメリット、使いこなしてコーディングを効率化する[…]

実際にChatGPTを使ってシェルスクリプトを作成する

シェルスクリプトとは?

シェルスクリプトは、UNIXやLinuxベースのオペレーティングシステムで使用される、一連のコマンドを連続的に実行するためのスクリプト言語です。これは、日常のタスクを自動化するための強力なツールとして、システム管理者や開発者によって広く利用されています。

具体的には、ファイルの管理、プログラムの起動、データの処理など、様々なタスクを自動化するスクリプトを簡単に作成できます。例えば、定期的に特定のフォルダ内の古いファイルを削除する、あるいはサーバの稼働状況を確認して通知を送るなどの操作が、シェルスクリプトによって手間なく実行できます。

プロンプトテンプレ

今回は、このようなプロンプトテンプレートを使って、ChatGPTにシェルスクリプトを作成してもらいます。

#命令書
以下の#要件を満たすためのシェルスクリプトを生成してください。
#仕様を基にスクリプトを作成すること

#要件
{自由記述}

#仕様
ステップ1:{自由記述}
ステップ2:{自由記述}
・・・

#注意点
*#仕様において不明瞭な箇所があれば質問してください。
*説明文を追記してください。
*ユーザーが自由に入力する箇所は{ユーザーが入力}と表示してください

#出力形式
スクリプトはマークダウンで出力すること
---------------------------
スクリプトを出力
----------------------------
説明文

実際にChatGPTに入力した結果

①新しいメールを通知するシェルスクリプトを作成する

未読のメールの数を表示し、新しいメールがあればデスクトップ通知を送るシェルスクリプトを作成します。

入力文:

#命令書
以下の#要件を満たすためのシェルスクリプトを生成してください。
#仕様を基にスクリプトを作成すること

#要件
未読のメールの数を表示して、新しいメールがあればデスクトップ通知を送る

#仕様
ステップ1:メールボックスをチェックして未読のメール数を取得
ステップ2:未読のメール数を表示
ステップ3:新しいメールがあればデスクトップ通知を送る

#注意点
*#仕様において不明瞭な箇所があれば質問してください。
*説明文を追記してください。
*ユーザーが自由に入力する箇所は{ユーザーが入力}と表示してください

#出力形式
スクリプトはマークダウンで出力すること
---------------------------
スクリプトを出力
----------------------------
説明文

ChatGPTの出力(GPT-4):

了解しました。以下のシェルスクリプトは、メールボックスをチェックして未読のメールの数を取得し、その数を表示、新しいメールがあればデスクトップ通知を送るためのものです。

説明文
このスクリプトは、未読のメールの数を確認し、その数を表示します。さらに、未読のメールが存在する場合はデスクトップ通知を表示します。以下のスクリプトを使用する前に、適切なメールボックスの場所や方法でアクセスするための設定が必要です。このサンプルでは、mailコマンドを使用してメールボックスにアクセスしていますが、ユーザーの環境や使用しているメールサーバーによって異なる場合があります。

bash
Copy code
#!/bin/bash

# ステップ1:メールボックスをチェックして未読のメール数を取得
unread_count=$(mail -H | grep -c 'U')

# ステップ2:未読のメール数を表示
echo "未読のメール数: $unread_count"

# ステップ3:新しいメールがあればデスクトップ通知を送る
if [ "$unread_count" -gt 0 ]; then
    notify-send "新しいメールがあります" "未読のメール数: $unread_count"
fi

使い方:
1.上記のスクリプトをcheck_mail.shなどの名前で保存します。
2.ターミナルでchmod +x check_mail.shを実行して、スクリプトに実行権限を付与します。
3../check_mail.shを実行して、未読のメール数とデスクトップ通知を確認します。

注意: notify-sendコマンドが必要です。これは多くのLinuxディストリビューションでデフォルトでインストールされていますが、インストールされていない場合はパッケージマネージャーを使用してインストールしてください。

また、実際にこのスクリプトを動作させるには、mailコマンドがシステムにインストールされている必要があり、適切なメールボックスにアクセスする設定が必要です。

プロンプトに対し、適切なシェルスクリプトのコードが出力されました。出力されたスクリプトは要件を満たしており、mailコマンドを用いた未読メールの数の取得や、notify-sendを利用したデスクトップ通知の方法を解説してくれました。

さらに、シェルスクリプトの使用方法や注意点についての説明も含まれており、ユーザーにとってわかりやすい内容となっています。

②ディスク容量を確認するシェルスクリプトを作成する

フォルダ内の30日以上古いログファイルの削除、使用中のディスク容量の確認、使用容量が80%以上では警告を表示するシェルスクリプトを作成します。

入力文:

#命令書
以下の#要件を満たすためのシェルスクリプトを生成してください。
#仕様を基にスクリプトを作成すること

#要件
フォルダ内の古いログファイルを削除し、使用しているディスク容量を確認

#仕様
ステップ1:30日以上古いログファイルを削除
ステップ2:使用しているディスク容量を確認
ステップ3:使用容量が80%以上であれば警告を表示

#注意点
*#仕様において不明瞭な箇所があれば質問してください。
*説明文を追記してください。
*ユーザーが自由に入力する箇所は{ユーザーが入力}と表示してください

#出力形式
スクリプトはマークダウンで出力すること
---------------------------
スクリプトを出力
----------------------------
説明文

ChatGPTの出力(GPT-4):

了解しました。以下は、指定された要件に基づいてフォルダ内の古いログファイルを削除し、使用中のディスク容量を確認し、80%以上使用していれば警告を表示するためのシェルスクリプトです。

説明文
このスクリプトは、指定したフォルダ内の30日以上古いログファイルを削除し、使用中のディスク容量を確認します。さらに、使用容量が80%以上の場合、警告メッセージを表示します。フォルダのパスはユーザーが入力する必要があります。

bash
Copy code
#!/bin/bash

# ユーザーにログファイルが保存されているフォルダのパスを入力させる
echo "ログファイルが保存されているフォルダのパスを入力してください:"
read log_folder

# ステップ1:30日以上古いログファイルを削除
find "$log_folder" -name "*.log" -mtime +30 -exec rm -f {} \;

# ステップ2:使用しているディスク容量を確認
used_percentage=$(df --output=pcent "$log_folder" | tail -1 | tr -d '%' | tr -d ' ')

# ステップ3:使用容量が80%以上であれば警告を表示
if [ "$used_percentage" -ge 80 ]; then
    echo "警告: 使用容量が80%以上です!"
fi

使い方:
1.上記のスクリプトをclean_logs.shなどの名前で保存します。
2.ターミナルでchmod +x clean_logs.shを実行して、スクリプトに実行権限を付与します。
3../clean_logs.shを実行し、指示に従ってログファイルが保存されているフォルダのパスを入力します。

注意: 正確な動作のため、ログファイルが保存されているフォルダのパスを正しく入力してください。

問題なくシェルスクリプトのコードと使用方法、注意点に関する説明が含まれる回答が出力されました。スクリプトは、指定のフォルダ内のログファイルを削除し、その後ディスクの使用容量を確認、80%以上使用している場合には警告を表示するという機能を持っています。

③プロセスの動作確認のシェルスクリプトを作成する

特定のプロセスが稼働中かを確認し、稼働していなければそのプロセスを再起動するシェルスクリプトを生成してもらいます。

入力文:

#命令書
以下の#要件を満たすためのシェルスクリプトを生成してください。
#仕様を基にスクリプトを作成すること

#要件
特定のプロセスが動いているか確認し、動いていなければ再起動する

#仕様
ステップ1:特定のプロセスが動いているか確認
ステップ2:動いていなければそのプロセスを起動
ステップ3:ステータスメッセージを表示

#注意点
*#仕様において不明瞭な箇所があれば質問してください。
*説明文を追記してください。
*ユーザーが自由に入力する箇所は{ユーザーが入力}と表示してください

#出力形式
スクリプトはマークダウンで出力すること
---------------------------
スクリプトを出力
----------------------------
説明文

ChatGPTの出力(GPT-4):

了解しました。以下は、指定された要件に基づいて特定のプロセスが動いているかを確認し、動いていなければ再起動するためのシェルスクリプトです。

説明文
このスクリプトは、指定したプロセス名に関連するプロセスが動いているかを確認します。もし該当のプロセスが動いていなければ、そのプロセスを起動します。結果として、プロセスのステータスに応じたメッセージが表示されます。

bash
Copy code
#!/bin/bash

# ユーザーにプロセス名を入力させる
echo "確認したいプロセス名を入力してください:"
read process_name

# ステップ1:特定のプロセスが動いているか確認
pgrep "$process_name" > /dev/null

# ステップ2:動いていなければそのプロセスを起動
if [ $? -ne 0 ]; then
    echo "プロセス $process_name が動いていません。起動します。"
    ${process_name} &   # プロセスの起動コマンド。具体的なコマンドはプロセスに応じて変わる場合があります。
    sleep 1             # 少し待機してからステータスメッセージを表示
else
    echo "プロセス $process_name は正常に動いています。"
    exit 0
fi

# ステップ3:ステータスメッセージを表示
pgrep "$process_name" > /dev/null && echo "プロセス $process_name は起動しました。" || echo "プロセス $process_name の起動に失敗しました。"
使い方:
上記のスクリプトをcheck_process.shなどの名前で保存します。
ターミナルでchmod +x check_process.shを実行して、スクリプトに実行権限を付与します。
./check_process.shを実行し、指示に従って確認したいプロセス名を入力します。
注意: 正確な動作のため、正しいプロセス名を入力してください。また、特定のプロセスの起動方法やオプションに応じてスクリプトの内容を適宜調整する必要があります。

シェルスクリプトのコードが提示され、その説明及び使用方法も提供されています。

スクリプトは、ユーザーが入力したプロセス名に基づき、当該プロセスが稼働中かを確認し、稼働していなければ再起動します。また、その後のステータスメッセージも表示します。

まとめ

今回PROMPTYでは、ChatGPTでシェルスクリプトを作成する方法を紹介しました。

ChatGPTを活用することで、要件や手順を日本語で指定するだけで、シェルスクリプトを作成することができます。また、スクリプトの使用方法や注意点を詳しく解説してもらうことができます。

今回の例を参考に、皆さまもシェルスクリプトの作成にChatGPTを導入してみてはいかがでしょうか。