「毎回同じコマンドを打つのが面倒…」「先輩が使ってる自動化スクリプトって何?」
インフラエンジニアとして働き始めると、シェルスクリプトという言葉を耳にする機会が増えてきます。難しそうに聞こえるかもしれませんが、実はプログラミング未経験の方でも比較的取り組みやすい技術なんです。
この記事では、シェルスクリプトとは何か、なぜインフラエンジニアに必要なのか、そして簡単なスクリプトの書き方まで、初心者向けにやさしく解説します。
シェルスクリプトとは?
シェルスクリプトとは、Linuxのコマンドを複数まとめて、自動で実行できるようにしたファイルのことです。
普段ターミナル(黒い画面)で1つずつ打っているコマンドを、テキストファイルに書いておけば、そのファイルを実行するだけで全部まとめて処理してくれます。
身近な例で考えてみよう
たとえば、毎朝こんな作業をしているとします。
- サーバーにログインする
- ログファイルを確認する
- ディスク容量をチェックする
- 結果をファイルに保存する
これを毎日手作業でやるのは大変ですよね。シェルスクリプトを使えば、ボタン1つ(コマンド1つ)で全部自動化できるんです。
「シェル」って何?
シェル(Shell)とは、人間とコンピュータの間を取り持つ「通訳」のようなプログラムです。私たちが打ったコマンドを、コンピュータが理解できる形に変換してくれます。
Linuxでよく使われるシェルには以下のようなものがあります。
| シェルの名前 | 特徴 |
|---|---|
| bash(バッシュ) | 最も一般的。多くのLinuxで標準採用 |
| sh(シェル) | 最も基本的なシェル |
| zsh(ズィーシェル) | bashの拡張版。Macで標準採用 |
初心者の方は、まずbashを覚えておけばOKです。
なぜインフラエンジニアにシェルスクリプトが必要なの?
インフラエンジニアの仕事には、「同じ作業を何度も繰り返す」場面がたくさんあります。
シェルスクリプトが活躍する場面
- 定期的なバックアップ:毎日決まった時間にデータを保存
- ログの収集・整理:複数サーバーからログを集めてまとめる
- 監視・アラート:異常があったらメールで通知
- 環境構築の自動化:新しいサーバーの初期設定を一括で行う
これらを毎回手作業でやっていたら、時間もかかりますしミスも起きやすくなります。シェルスクリプトで自動化すれば、作業時間の短縮とヒューマンエラーの防止が同時に実現できるんです。
未経験からでも武器になるスキル
「プログラミングは苦手…」という方でも大丈夫。シェルスクリプトは、普段使っているLinuxコマンドの延長線上にあるので、コマンドを覚えていれば自然と書けるようになります。
現場で「この作業、自動化できますよ」と提案できれば、未経験でも確実に評価されます。
シェルスクリプトの基本的な書き方
それでは、実際にシェルスクリプトを書いてみましょう。
Step1:ファイルを作成する
まず、テキストファイルを作ります。ファイル名は何でもOKですが、.shという拡張子をつけるのが一般的です。
vi test.sh
Step2:1行目に「シバン」を書く
シェルスクリプトの1行目には、必ず以下のように書きます。
#!/bin/bash
これは「シバン(shebang)」と呼ばれ、「このスクリプトはbashで実行してね」という宣言です。おまじないだと思って、必ず書くようにしましょう。
Step3:実行したいコマンドを書く
あとは、実行したいコマンドを順番に書いていくだけです。
#!/bin/bash
# 今日の日付を表示
echo "=== 今日のサーバー状態 ==="
date
# ディスク使用量を表示
echo ""
echo "【ディスク使用量】"
df -h
# メモリ使用量を表示
echo ""
echo "【メモリ使用量】"
free -h
#から始まる行はコメント(メモ)です。処理には影響しないので、後から見てわかりやすいようにメモを残しておきましょう。
Step4:実行権限を付ける
作成したスクリプトを実行するには、実行権限を付ける必要があります。
chmod +x test.sh
Step5:実行する
あとは実行するだけ!
./test.sh
これで、ファイルに書いたコマンドが上から順番に実行されます。
もう少しステップアップ:変数を使ってみよう
シェルスクリプトでは、変数を使うことでより便利なスクリプトが書けます。
変数の基本
#!/bin/bash
# 変数に値を代入(=の前後にスペースを入れない!)
NAME="田中"
DATE=$(date +%Y-%m-%d)
# 変数を使う時は$をつける
echo "こんにちは、${NAME}さん"
echo "今日は${DATE}です"
注意点として、=の前後にスペースを入れてはいけません。これはよくあるミスなので覚えておきましょう。
実践的な例:ログのバックアップ
変数を使った実践的なスクリプトを見てみましょう。
#!/bin/bash
# 設定
BACKUP_DIR="/backup/logs"
DATE=$(date +%Y%m%d)
LOG_FILE="/var/log/app.log"
# バックアップ実行
cp ${LOG_FILE} ${BACKUP_DIR}/app_${DATE}.log
# 完了メッセージ
echo "バックアップ完了: app_${DATE}.log"
このスクリプトを毎日実行すれば、日付ごとにログファイルをバックアップできます。
よく使う便利な構文
最後に、知っておくと便利な構文をいくつか紹介します。
if文(条件分岐)
「もし〇〇だったら△△する」という処理です。
#!/bin/bash
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ ${DISK_USAGE} -gt 80 ]; then
echo "警告:ディスク使用率が${DISK_USAGE}%です!"
else
echo "ディスク使用率は${DISK_USAGE}%で正常です"
fi
for文(繰り返し)
同じ処理を繰り返し実行します。
#!/bin/bash
# 複数のサーバーに対して処理を実行
for SERVER in server1 server2 server3
do
echo "${SERVER}を確認中..."
ping -c 1 ${SERVER}
done
シェルスクリプト学習のコツ
シェルスクリプトを効率よく学ぶためのコツをお伝えします。
1. まずは真似から始める
いきなりゼロから書こうとせず、ネット上のサンプルや先輩のスクリプトを真似することから始めましょう。
2. 実際に手を動かす
読むだけでなく、実際にスクリプトを書いて動かしてみることが大切です。エラーが出ても、それが学びになります。
3. 日常の作業を自動化してみる
「この作業、スクリプトにできないかな?」という視点で日々の業務を見てみましょう。小さなことでも自動化できると達成感がありますよ。
まとめ
この記事のポイントを整理します。
| 項目 | 内容 |
|---|---|
| シェルスクリプトとは | Linuxコマンドをまとめて自動実行できるファイル |
| なぜ必要か | 作業時間短縮・ヒューマンエラー防止 |
| 基本の書き方 | 1行目に#!/bin/bash、あとはコマンドを順番に |
| 実行方法 | chmod +xで権限付与→./ファイル名で実行 |
| 学習のコツ | 真似から始めて、実際に手を動かす |
シェルスクリプトは、インフラエンジニアにとって「持っていて損はない」どころか「必須」と言えるスキルです。最初は簡単なスクリプトから始めて、少しずつできることを増やしていきましょう。
未経験からでも、コツコツ学べば必ず身につきます。ぜひ今日から、自動化の第一歩を踏み出してみてください!