Claude Codeでシェルスクリプトを自動生成する方法

Claude Codeでシェルスクリプトを自動生成する方法

Claude Codeを使うと、バックアップ、ログ整理、ファイル検索、環境確認、デプロイ補助、定期実行処理などのシェルスクリプト作成を効率化できます。自然言語で目的や条件を伝えることで、LinuxやUbuntu環境で使いやすいスクリプトの下書きを作成できます。ただし、削除・上書き・権限変更を伴う処理は事故につながりやすいため、安全確認を前提に運用することが重要です。

Claude Codeでシェルスクリプトを自動生成するメリット

シェルスクリプトは、Linux作業を効率化するうえで非常に便利です。

一方で、書き方を間違えるとファイル削除、権限変更、意図しない上書きなどの事故につながることがあります。

Claude Codeを使うと、目的を自然言語で伝えながら、処理の流れを整理したスクリプトを作成できます。

たとえば、次のような作業に向いています。

・ログファイルの整理
・バックアップ処理
・開発環境の確認
・ファイル検索
・不要ファイルの一覧化
・Git差分の確認
・Docker操作の補助
・サーバー状態の確認
・定期実行用スクリプトの作成
・CSVやテキストファイルの整形
・デプロイ前チェック
・エラー調査用コマンドのまとめ

ゼロからコマンドを組み立てるより、Claude Codeに下書きを作らせ、人間が確認・修正する流れにすると安全性と作業効率を両立しやすくなります。

シェルスクリプト自動生成で重要な考え方

Claude Codeでシェルスクリプトを作るときは、いきなり実行するのではなく、まず下書きを作らせることが重要です。

特に注意が必要なのは、次のような処理です。

・ファイル削除
・ディレクトリ削除
・上書き保存
・権限変更
・所有者変更
・サービス再起動
・データベース操作
・本番環境での実行
・大量ファイルへの一括処理

シェルスクリプトは短いコードでも影響範囲が大きくなることがあります。

Claude Codeに依頼するときは、「安全確認を入れる」「削除前に対象を表示する」「dry-runを用意する」「本番実行前に確認を挟む」といった条件を必ず入れると安全です。

Claude Codeの基本的な使い方

プロジェクトのルートディレクトリ、またはスクリプトを作成したい作業ディレクトリでClaude Codeを起動します。

cd /path/to/your-project
claude

シェルスクリプトを作成する場合は、次のように依頼します。

ログファイルを日付ごとに整理するシェルスクリプトを作成してください。

条件:
・bashで作成する
・set -euo pipefailを使う
・対象ディレクトリを変数で指定できるようにする
・処理前に対象ファイルを表示する
・削除処理は入れない
・実行例も書く

最初から複雑なスクリプトを作らせるより、小さな処理単位で作成し、動作確認しながら拡張するほうが安全です。

安全なシェルスクリプトの基本形

Claude Codeにシェルスクリプトを作らせるときは、基本形を指定しておくと品質が安定します。

!/bin/bash

set -euo pipefail

echo “処理を開始します”

set -euo pipefailは、安全性を高めるためによく使われます。

それぞれの意味は次の通りです。

・set -e:コマンドが失敗したら停止する
・set -u:未定義変数を使ったらエラーにする
・set -o pipefail:パイプ処理の途中で失敗した場合も検知する

Claude Codeへの依頼例です。

以下の基本方針でシェルスクリプトを作成してください。

・#!/bin/bashを使う
・set -euo pipefailを入れる
・変数は先頭にまとめる
・処理ごとにコメントを書く
・エラー時に分かりやすいメッセージを出す
・実行例を最後に書く

基本形を決めておくと、毎回のスクリプト品質を揃えやすくなります。

プロンプトに含めるべき情報

Claude Codeでシェルスクリプトを自動生成する場合、目的だけでなく条件を細かく伝えることが大切です。

最低限、次の情報を入れると安定します。

・何をしたいか
・対象ファイルや対象ディレクトリ
・実行環境
・削除や上書きの有無
・ログ出力の有無
・dry-runの有無
・エラー時の動作
・実行例
・注意点
・本番環境で使うかどうか

プロンプト例です。

以下の条件でシェルスクリプトを作成してください。

目的:
指定ディレクトリ内の.logファイルを日付付きで圧縮する

実行環境:
Ubuntu 22.04

条件:
・bashで作成する
・set -euo pipefailを使う
・対象ディレクトリは変数で指定する
・圧縮先ディレクトリも変数で指定する
・削除処理は入れない
・処理対象を事前に表示する
・実行ログを表示する
・実行例を書く

このように条件を明確にすると、意図しない処理を減らせます。

ログ整理スクリプトを生成する例

ログファイルの整理は、シェルスクリプト自動生成と相性がよい作業です。

Claude Codeへの依頼例です。

/var/log/myapp配下の.logファイルを、backupディレクトリへ日付付きでコピーするシェルスクリプトを作成してください。

条件:
・削除処理は入れない
・コピー前に対象ファイルを表示する
・backupディレクトリがなければ作成する
・ファイル名に年月日を付ける
・エラー時は停止する
・実行例を書く

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

SOURCE_DIR=”/var/log/myapp”
BACKUP_DIR=”./backup”
DATE=”$(date +%Y%m%d)”

echo “対象ディレクトリ: ${SOURCE_DIR}”
echo “バックアップ先: ${BACKUP_DIR}”

mkdir -p “${BACKUP_DIR}”

echo “対象ファイル一覧:”
find “${SOURCE_DIR}” -maxdepth 1 -type f -name “*.log” -print

echo “コピーを開始します”

find “${SOURCE_DIR}” -maxdepth 1 -type f -name “*.log” | while read -r file; do
base_name=”$(basename “${file}”)”
cp “${file}” “${BACKUP_DIR}/${DATE}_${base_name}”
done

echo “コピーが完了しました”

このようなスクリプトは、最初はコピー処理のみにしておき、削除処理を入れないほうが安全です。

バックアップスクリプトを生成する例

バックアップ処理では、対象ディレクトリ、保存先、保存形式、世代管理を明確にします。

Claude Codeへの依頼例です。

指定ディレクトリをtar.gzでバックアップするシェルスクリプトを作成してください。

条件:
・対象ディレクトリは変数で指定する
・保存先ディレクトリは変数で指定する
・ファイル名に年月日時分を付ける
・バックアップ前に対象ディレクトリの存在確認をする
・削除処理は入れない
・実行結果を表示する
・set -euo pipefailを使う

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

SOURCE_DIR=”./data”
BACKUP_DIR=”./backup”
TIMESTAMP=”$(date +%Y%m%d%H%M)”
BACKUP_FILE=”${BACKUP_DIR}/backup_${TIMESTAMP}.tar.gz”

if [ ! -d “${SOURCE_DIR}” ]; then
echo “対象ディレクトリが存在しません: ${SOURCE_DIR}”
exit 1
fi

mkdir -p “${BACKUP_DIR}”

echo “バックアップ対象: ${SOURCE_DIR}”
echo “保存先: ${BACKUP_FILE}”

tar -czf “${BACKUP_FILE}” “${SOURCE_DIR}”

echo “バックアップが完了しました”
ls -lh “${BACKUP_FILE}”

バックアップスクリプトでは、まず削除なしで作成し、必要に応じて古いバックアップ削除を別処理として追加するほうが安全です。

dry-run付きスクリプトを作成する方法

削除や移動を含むスクリプトでは、dry-runを付けると安全です。

dry-runとは、実際には処理せず、対象だけを表示する確認モードです。

Claude Codeへの依頼例です。

古いログファイルを削除するシェルスクリプトを作成してください。

条件:
・30日より古い.logファイルを対象にする
・デフォルトはdry-runにする
・–executeを付けた場合のみ削除する
・削除前に対象ファイルを表示する
・対象ディレクトリは変数で指定する
・set -euo pipefailを使う

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

TARGET_DIR=”./logs”
DAYS=30
MODE=”dry-run”

if [ “${1:-}” = “–execute” ]; then
MODE=”execute”
fi

echo “対象ディレクトリ: ${TARGET_DIR}”
echo “対象日数: ${DAYS}日より古いファイル”
echo “実行モード: ${MODE}”

echo “対象ファイル:”
find “${TARGET_DIR}” -type f -name “*.log” -mtime +”${DAYS}” -print

if [ “${MODE}” = “execute” ]; then
echo “削除を実行します”
find “${TARGET_DIR}” -type f -name “*.log” -mtime +”${DAYS}” -delete
echo “削除が完了しました”
else
echo “dry-runのため削除は実行していません”
echo “実際に削除する場合は –execute を付けて実行してください”
fi

実行例です。

./cleanup-logs.sh

./cleanup-logs.sh –execute

削除処理は必ずdry-runを標準にしておくと、事故を防ぎやすくなります。

環境確認スクリプトを生成する例

開発環境やサーバー環境の確認スクリプトも、Claude Codeで作りやすい分野です。

Claude Codeへの依頼例です。

Ubuntuサーバーの基本情報を確認するシェルスクリプトを作成してください。

含める内容:
・OS情報
・カーネル情報
・ログインユーザー
・現在のディレクトリ
・ディスク容量
・メモリ使用量
・CPU情報
・Gitバージョン
・Dockerバージョン
・curlバージョン

条件:
・見出しを付けて見やすくする
・存在しないコマンドはエラーにせずスキップする
・set -euo pipefailを使う

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

section() {
echo
echo “===== $1 =====”
}

command_exists() {
command -v “$1” >/dev/null 2>&1
}

section “OS情報”
if command_exists lsb_release; then
lsb_release -a
else
cat /etc/os-release
fi

section “カーネル情報”
uname -a

section “ユーザー”
whoami

section “現在のディレクトリ”
pwd

section “ディスク容量”
df -h

section “メモリ使用量”
free -h

section “CPU情報”
lscpu | head

section “Gitバージョン”
if command_exists git; then
git –version
else
echo “gitはインストールされていません”
fi

section “Dockerバージョン”
if command_exists docker; then
docker –version
else
echo “dockerはインストールされていません”
fi

section “curlバージョン”
if command_exists curl; then
curl –version | head -n 1
else
echo “curlはインストールされていません”
fi

環境確認スクリプトは、トラブルシューティングや引き継ぎ時に役立ちます。

ファイル検索スクリプトを生成する例

プロジェクト内で特定の文字列を探すスクリプトも便利です。

Claude Codeへの依頼例です。

プロジェクト内から指定したキーワードを検索するシェルスクリプトを作成してください。

条件:
・第1引数で検索キーワードを受け取る
・node_modules、vendor、.gitは除外する
・対象ファイル名と行番号を表示する
・キーワード未指定の場合は使い方を表示する
・grepを使用する

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

if [ $# -lt 1 ]; then
echo “使い方: $0 検索キーワード”
exit 1
fi

KEYWORD=”$1″

grep -RIn “${KEYWORD}” . \
–exclude-dir=”.git” \
–exclude-dir=”node_modules” \
–exclude-dir=”vendor”

実行例です。

./search-keyword.sh DATABASE_URL

./search-keyword.sh “TODO”

よく使う検索条件をスクリプト化しておくと、調査作業が早くなります。

Docker操作用スクリプトを生成する例

Dockerを使う開発環境では、起動、停止、ログ確認、コンテナ接続などをスクリプト化すると便利です。

Claude Codeへの依頼例です。

docker composeを使った開発環境操作用シェルスクリプトを作成してください。

条件:
・startで起動
・stopで停止
・logsでログ表示
・psで状態確認
・shellでappコンテナに入る
・引数がない場合は使い方を表示する
・set -euo pipefailを使う

生成されるスクリプト例です。

!/bin/bash

set -euo pipefail

COMMAND=”${1:-}”

case “${COMMAND}” in
start)
docker compose up -d
;;
stop)
docker compose down
;;
logs)
docker compose logs -f
;;
ps)
docker compose ps
;;
shell)
docker compose exec app bash
;;
*)
echo “使い方: $0 {start|stop|logs|ps|shell}”
exit 1
;;
esac

実行例です。

./dev.sh start

./dev.sh logs

./dev.sh shell

プロジェクトごとにコンテナ名が違うため、Claude Codeにはdocker-compose.ymlを確認させてから作成させると精度が上がります。

cronで定期実行するスクリプトを作る方法

シェルスクリプトはcronと組み合わせることで、定期実行できます。

Claude Codeにcron用スクリプトを作らせる場合は、実行環境が通常のターミナルと違う点に注意が必要です。

特に、PATHや作業ディレクトリが異なる場合があります。

Claude Codeへの依頼例です。

cronで毎日実行するバックアップスクリプトを作成してください。

条件:
・絶対パスを使う
・ログファイルに実行結果を追記する
・エラー時もログに残す
・バックアップ先ディレクトリがなければ作成する
・削除処理は入れない
・cron設定例も書く

cron設定例です。

crontab -e

毎日午前3時に実行する場合です。

0 3 * * * /home/user/scripts/backup.sh >> /home/user/logs/backup.log 2>&1

cronで実行するスクリプトは、手動実行で問題ないことを確認してから登録する必要があります。

スクリプトのテスト方法も生成させる

Claude Codeにシェルスクリプトを作らせるときは、スクリプト本体だけでなくテスト方法も出させると安全です。

依頼例です。

このシェルスクリプトの動作確認手順も作成してください。

含める内容:
・テスト用ディレクトリの作成
・テスト用ファイルの作成
・dry-runでの確認
・実行後の確認
・後片付け方法
・注意点

確認用コマンド例です。

mkdir -p ./test-logs

touch ./test-logs/app.log

./cleanup-logs.sh

./cleanup-logs.sh –execute

ls -la ./test-logs

本番データでいきなり試すのではなく、テスト用ディレクトリで確認することが重要です。

生成されたスクリプトをレビューするポイント

Claude Codeが生成したシェルスクリプトは、必ず人間が確認する必要があります。

レビュー時に見るべきポイントは次の通りです。

・対象ディレクトリが正しいか
・削除処理が含まれていないか
・上書き処理が意図通りか
・変数が未定義にならないか
・スペースを含むファイル名に対応しているか
・エラー時に停止するか
・ログが分かりやすいか
・dry-runがあるか
・sudoが不要か
・本番環境で実行して安全か
・認証情報を出力していないか
・外部通信が含まれていないか

特にrm、find -delete、chmod、chown、curl、scp、rsync、sudoを含むスクリプトは慎重に確認する必要があります。

危険なコマンドを避けるためのプロンプト

シェルスクリプトでは、危険なコマンドの扱いを事前に制限することが大切です。

Claude Codeへの依頼時に、次のような条件を入れると安全です。

以下の安全ルールを守ってシェルスクリプトを作成してください。

・rm -rfを使わない
・find -deleteを使う場合はdry-runを必須にする
・chmod -R 777を使わない
・sudoを使わない
・削除前に対象ファイルを表示する
・上書き前にバックアップを作る
・本番環境で実行する前提にしない
・認証情報を表示しない
・外部通信を行わない

このようなルールをCLAUDE.mdに書いておくと、毎回の指示に含めなくても安全性を高めやすくなります。

CLAUDE.mdに書いておきたいルール

Claude Codeでシェルスクリプトをよく作成する場合は、CLAUDE.mdにルールを書いておくと便利です。

Claude Code シェルスクリプト作成ルール

基本方針

・bashで作成する
・#!/bin/bashを付ける
・set -euo pipefailを使う
・変数はファイル上部にまとめる
・処理ごとにコメントを書く
・実行例を記載する
・不明点は要確認とする

安全ルール

・rm -rfは原則使わない
・削除処理にはdry-runを付ける
・削除前に対象を表示する
・sudoは勝手に使わない
・chmod -R 777は使わない
・認証情報を出力しない
・本番環境での実行を前提にしない

出力ルール

・スクリプト本体
・実行方法
・テスト方法
・注意点
・変更したファイル
・要確認項目

CLAUDE.mdを用意しておくと、作成されるスクリプトの品質が安定しやすくなります。

実務で使いやすい作成フロー

実務でClaude Codeにシェルスクリプトを作らせる場合は、次の流れが安全です。

  1. 目的を明確にする
  2. 対象ディレクトリや対象ファイルを指定する
  3. 削除や上書きの有無を明記する
  4. まずdry-run付きで作らせる
  5. テスト用ディレクトリで実行する
  6. 結果を確認する
  7. 必要に応じて修正する
  8. 本番環境では再確認してから実行する
  9. Gitで管理する
  10. READMEや運用手順に実行方法を書く

Claude Codeはスクリプト作成を速くできますが、実行責任は人間にあります。

特に本番環境や重要データを扱う場合は、必ずレビューとテストを行う必要があります。

まとめ

Claude Codeを使うと、ログ整理、バックアップ、環境確認、ファイル検索、Docker操作、cron用処理などのシェルスクリプトを効率よく作成できます。

重要なのは、便利さだけでなく安全性を重視することです。

set -euo pipefailを使い、削除処理にはdry-runを付け、対象ファイルを事前に表示し、テスト用環境で確認してから使う流れが基本です。

CLAUDE.mdにシェルスクリプト作成ルールを書いておくと、毎回の品質を安定させやすくなります。

Claude Codeは作成を補助する道具であり、最終確認と実行判断は人間が行う必要があります。

安全なルールと確認手順を整えることで、Linux作業の自動化を効率よく進められます。