「毎日同じコマンドを手で打っている…」
「作業を自動化したいけど、何から始めればいいか分からない」
そんなときに役立つのがシェルスクリプトです。
この記事では、シェルスクリプトの基本構文から実際に使える自動化スクリプトの作り方までを、初心者にもわかりやすく解説します。
まずは小さな自動化から始めて、作業の効率化を目指しましょう。
シェルスクリプトとは?

シェルスクリプトってなに?
シェルスクリプトとは、複数のコマンドをまとめて自動実行できるファイルです。
たとえば、毎日ファイルをバックアップしたり、同じような操作を繰り返したりする作業を、一度にまとめて実行できるようになります。
LinuxやmacOSの「ターミナル」で使われるシェル(bashやzsh)に命令を与える方法として、開発や運用の現場で広く使われています。
ファイル名のつけ方
シェルスクリプトのファイルには、通常.sh
という拡張子をつけます。
例: backup.sh
、cleanup.sh
なぜシェルスクリプトを覚えるべき?
- 時間の節約:毎回手で打っていた作業が一瞬で終わる
- ミスの防止:同じ操作を確実に実行できる
- 夜間実行:寝ている間に重い処理を実行できる
まずはシェルスクリプトのファイル構造と、書き方の基本を学びましょう。
シェルスクリプトの基本構文
シバン(Shebang)って何?
#!/bin/bash
これをシバンと呼びます。
スクリプトの最初の行に必ず書きます。
「このファイルはbashというシェルで実行してください」という意味です。
なぜ必要?
- どのシェルで実行するかをコンピュータに教えるため
- 書かないとエラーになる場合がある
コマンドを順番に実行する
#!/bin/bash
echo "こんにちは"
date
説明
echo
:文字を表示するコマンドdate
:現在の日時を表示するコマンド
このスクリプトを実行すると、「こんにちは」と表示された後、現在の日時が表示されます。
変数を使ってみよう
変数とは、データを入れておく箱のようなものです。
#!/bin/bash
name="太郎"
echo "こんにちは、$name さん"
重要なポイント
- 変数名と
=
の間にスペースを入れてはいけない - 変数を使うときは
$
をつける - 文字列は
"
で囲む
実行結果
こんにちは、太郎 さん
コメントを書こう
#!/bin/bash
# これはコメントです
# コメントは実行されません
name="太郎" # ここにもコメントが書けます
echo "こんにちは、$name さん"
コメントの使い方
#
のあとに説明を書く- あとで見返したときに何をしているかわかるように書く
- 他の人が読んでもわかるように書く
基本構文がわかれば、次は「条件分岐」と「繰り返し処理」で、より柔軟なスクリプトを作ることができます。
条件分岐と繰り返し処理
if文(条件分岐)
「もし○○なら△△をする」という処理を作れます。
#!/bin/bash
name="太郎"
if [ "$name" = "太郎" ]; then
echo "ようこそ、太郎さん"
else
echo "あなたは誰ですか?"
fi
構文の説明
if [ 条件 ]; then
:もし条件が正しければelse
:そうでなければfi
:if文の終わり(ifを逆から読んだもの)
注意点
[
と]
の前後にスペースが必要- 変数は
"
で囲む("$name"
)
for文(繰り返し処理)
同じ処理を何回も実行したいときに使います。
#!/bin/bash
for i in 1 2 3; do
echo "数字は $i"
done
実行結果
数字は 1
数字は 2
数字は 3
ファイルに対して繰り返し処理
#!/bin/bash
for file in *.txt; do
echo "ファイル名: $file"
done
これは現在のフォルダにある.txt
ファイルすべてに対して処理をします。
while文(条件を満たす間は繰り返し)
#!/bin/bash
count=3
while [ $count -gt 0 ]; do
echo "残り $count 回"
count=$((count - 1))
done
echo "終了!"
実行結果
残り 3 回
残り 2 回
残り 1 回
終了!
構文の説明
-gt
:「より大きい」という意味(greater than)$((count - 1))
:計算式(countから1を引く)
条件や繰り返しを活用すれば、自動化の幅が一気に広がります。次は、シェルスクリプトでよくある実用例を紹介します。
よく使われる実用スクリプト例

バックアップスクリプト
大切なファイルを自動でバックアップします。
#!/bin/bash
# 今日の日付を取得
today=$(date +%Y%m%d)
# ファイルをバックアップフォルダにコピー
cp ~/data.txt ~/backup/data_$today.txt
echo "バックアップ完了: data_$today.txt"
何をしているか
date +%Y%m%d
:今日の日付を「20241206」の形で取得cp
:ファイルをコピーするコマンド- ファイル名に日付をつけて、いつのバックアップかわかるようにする
ファイルの一括リネーム
たくさんのファイル名を一度に変更します。
#!/bin/bash
# 現在のフォルダにある.txtファイルすべてに「old_」をつける
for file in *.txt; do
if [ -f "$file" ]; then # ファイルが存在するかチェック
mv "$file" "old_$file"
echo "変更: $file → old_$file"
fi
done
echo "リネーム完了"
何をしているか
*.txt
:現在のフォルダにあるすべての.txtファイルmv
:ファイル名を変更するコマンド-f "$file"
:ファイルが実際に存在するかチェック
ログの監視と通知
システムのエラーログを監視します。
#!/bin/bash
log_file="server.log"
if [ -f "$log_file" ]; then
if grep -q "ERROR" "$log_file"; then
echo "エラーを検出しました!"
echo "確認してください: $log_file"
else
echo "エラーはありません"
fi
else
echo "ログファイルが見つかりません: $log_file"
fi
何をしているか
grep -q "ERROR"
:ファイルの中に「ERROR」という文字があるかチェック-q
:結果を表示しない(見つかったかどうかだけ知りたい)
実用例を通じて、日常作業を自動化できるイメージが湧いてきたと思います。最後に、スクリプトの実行方法と注意点を確認しましょう。
シェルスクリプトの実行と注意点
スクリプットファイルを作成する
手順1:ファイルを作る
# エディタでファイルを作成
nano backup.sh
手順2:スクリプトを書く
#!/bin/bash
echo "テストです"
手順3:ファイルを保存する
- nanoの場合:
Ctrl + X
で終了、Y
で保存
実行権限を付与する
作ったスクリプトを実行するには、実行権限をつける必要があります。
chmod +x backup.sh
なぜ必要?
- セキュリティのため、普通のファイルは実行できない設定になっている
- 実行権限をつけることで「このファイルは実行してもいい」と許可する
スクリプトを実行する
./backup.sh
注意点
- 最初に
./
をつける - これは「現在のフォルダにあるファイルを実行する」という意味
よくあるエラーと対処法
エラー1:「Permission denied」
# 原因:実行権限がない
# 解決:実行権限をつける
chmod +x script.sh
エラー2:「No such file or directory」
# 原因:ファイルが見つからない
# 解決:ファイル名とパスを確認する
ls -la *.sh # スクリプトファイルがあるか確認
安全にスクリプトを使うための注意点
テスト環境で試す
- 重要なファイルがある環境でいきなり実行しない
- まずは練習用のフォルダで試す
エラーハンドリングを入れる
#!/bin/bash
# エラーが発生したらスクリプトを停止
set -e
# 重要なファイルをバックアップ前にチェック
if [ ! -f "important.txt" ]; then
echo "エラー: important.txtが見つかりません"
exit 1
fi
ログを残す
#!/bin/bash
echo "$(date): バックアップ開始" >> backup.log
# バックアップ処理
echo "$(date): バックアップ完了" >> backup.log
安全かつ正確にスクリプトを運用するには、基本ルールの遵守とテストが欠かせません。
まとめ
シェルスクリプトは、手作業を効率化し、ミスを減らすための強力なツールです。
学ぶのに特別な環境も不要で、ターミナルさえあればすぐに始められるのも魅力です。
この記事の要点
- シェルスクリプトは複数のコマンドを自動実行できる
- 基本構文(シバン、変数、条件分岐、ループ)を理解する
- 実用例を参考に、身近な作業から自動化してみる
- 安全性を考えて、テスト環境で試してから使う
コメント