この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
そう思っている方は多いのではないでしょうか。
私が初めてシェルスクリプトを書いてうまく動いた瞬間のことは、今でもはっきり覚えています。
画面に期待通りの出力が流れた時、思わず「動いた!」と声を上げてしまいました。
この記事では、3,100名以上を指導してきた現役講師として、シェルスクリプトに初めて触れた時の体験と、
その「小さな成功体験」がその後の学習をどれほど加速させるかを、正直にお伝えします。
この記事のポイント
・シェルスクリプトの「初動作」は学習の転換点になりやすい
・最初の1本は10行以内の単純な繰り返し処理で十分
・自動化の快感が「もっと書きたい」を引き出す
・失敗ログがそのまま次の教材になる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
私が初めてシェルスクリプトを書いた日のこと
SE時代の2003年頃、私は毎朝同じ作業を繰り返していました。複数のサーバーのログを確認して、ディスク使用量を調べて、結果をメモ帳に書き留める。
たった10分ほどの作業ですが、毎日のことなので地味に消耗していました。
そこで上司に「シェルスクリプトで自動化できますよ」と言われ、初めて書いてみることにしました。
最初に書いたのは、こんなシンプルなものです。
#!/bin/bash # 複数サーバーのディスク使用量を確認するスクリプト for HOST in web01 web02 db01; do echo "=== $HOST ===" ssh $HOST "df -h / /var" done
毎朝手でやっていた作業が、一瞬で終わった瞬間です。
「これが自動化か」と、腑に落ちた感覚がありました。
コマンドを手で打つ作業をファイルに書くだけで、何度でも同じことができる。
この当たり前の事実が、体感として初めて理解できた瞬間でした。
シェルスクリプトの「初動作」が学習の転換点になる理由
私がセミナーで3,100名以上を指導してきた経験から言うと、シェルスクリプトを初めてうまく動かせた受講生は、その後の学習速度が明らかに変わります。
1. 「コマンドは道具」から「コマンドは材料」に変わる
コマンドラインを覚える段階では、各コマンドは「一つの道具」として使います。`ls` はファイルを表示する道具、`df` はディスクを確認する道具、という感覚です。
ところがシェルスクリプトを書き始めると、コマンドが「組み合わせる材料」に変わります。
`for` ループでコマンドを繰り返す、`if` 文で条件分岐させる。
この視点の転換が起きると、バラバラに覚えてきたコマンドが「つながる」のです。
2. 「ちゃんと動く」が次の「もっとやってみたい」につながる
受講生からよく聞かれる質問が「シェルスクリプトはどこから学べばいいですか?」です。私がいつも答えるのは「今やっている手作業を一つ、スクリプトにしてみてください」です。
教材を探して勉強するより、自分の日常作業を自動化してみる方が圧倒的に定着します。
なぜなら、動いた時の達成感が「また書きたい」を生み出すからです。
学習の継続には、外からの強制より内側から湧く動機が必要です。
シェルスクリプトの初動作は、その動機を生み出す体験として非常に強力です。
3. 失敗した記録がそのまま学習材料になる
私が最初に書いたスクリプトは、もちろん一発では動きませんでした。`ssh $HOST "df -h / /var"` の部分で、SSH鍵の設定が必要なことを知らなかったのです。
Permission deniedが出て、調べて、解決する。
このプロセス自体が、SSHの仕組みを理解する最高の教材になりました。
シェルスクリプトを書く過程で出るエラーは、その時点の自分に必要な知識の欠如を教えてくれます。
20年以上サーバーを運用してきた経験から言うと、エラーを怖がらずに書いてみることが上達の近道です。
最初の1本を書くための3つのステップ
1. 自分が毎日手でやっている作業を1つ選ぶ
スクリプトで自動化するべき作業は「複雑なもの」より「繰り返しているもの」です。・毎朝確認しているログファイルを表示する
・ファイルをバックアップするコピーコマンドを打つ
・複数のファイルに同じ変更を加える
こういった「同じことを何度もやっている」作業が最適です。
2. まず手でコマンドを打って、動くことを確認する
スクリプトを書く前に、コマンドを手で実行して期待通りに動くことを確認します。これが非常に重要です。スクリプト化する前に個々のコマンドが正しく動くことを確認しておけば、
問題が起きた時に「コマンド自体の問題」と「スクリプトの問題」を切り分けられます。
3. 動くコマンドをスクリプトファイルに書く
#!/bin/bash # スクリプトの1行目は必ず shebang で始める # コマンドをそのまま書いて実行する df -h / ls -lh /var/log/ | head -20
手で打つコマンドをファイルに書いて、`chmod +x` で実行権限を付けて、`./スクリプト名.sh` で実行する。
この流れを一度体験することが、すべての出発点です。
シェルスクリプトが書けると現場で何が変わるか
私の現場経験では、シェルスクリプトを使えるエンジニアとそうでないエンジニアには、仕事の密度に大きな差が生まれます。
・手作業のミスが減る(スクリプトは毎回同じことをする)
・作業の再現性が高まる(スクリプトがそのまま手順書になる)
・後輩への作業引き継ぎが楽になる(動くスクリプトを渡せばいい)
セミナーで受講生から「コマンドは覚えたけど、現場でどう活かせばいいか分からない」という声をよく聞きます。
その答えの一つがシェルスクリプトです。
個々のコマンドを「組み合わせて動かす」経験が、現場で即戦力になる土台を作ります。
よくある失敗とその対処法
実行権限がなくてエラーになる
# このエラーが出たら bash: ./backup.sh: Permission denied # chmod で実行権限を付ける chmod +x backup.sh ./backup.sh
文字コードの問題でスクリプトが動かない
WindowsのメモパッドやExcelでスクリプトを編集すると、改行コードがCR+LFになることがあります。Linuxのシェルスクリプトは改行コードがLFである必要があります。
# 改行コードを確認する file backup.sh # 「CRLF」と表示されたら変換が必要 # sedで変換する sed -i 's/\r//' backup.sh
変数の展開が意図通りにならない
# NG: シングルクォートでは変数が展開されない echo 'ホスト名は $HOSTNAME です' # 出力: ホスト名は $HOSTNAME です # OK: ダブルクォートで変数を展開する echo "ホスト名は $HOSTNAME です" # 出力: ホスト名は web01 です
まとめ
シェルスクリプトに初めて触れることへの不安は、多くの人が感じます。でも、最初の1本が動いた時の感動は、その不安を一気に吹き飛ばします。
大切なのは「完璧なスクリプトを最初から書こうとしない」ことです。
手でやっている作業を1つ選んで、とにかく動かしてみる。
エラーが出たら調べて直す。そのサイクルを回すことが、確実な上達につながります。
| つまずきポイント | 対処法 |
|---|---|
| 実行できない | chmod +x スクリプト名.sh で権限を付ける |
| 変数が展開されない | シングルクォートをダブルクォートに変える |
| 改行コードのエラー | sed -i 's/\r//' スクリプト名.sh で変換 |
| どこから始めればよいか | 今日やった手作業を1つスクリプト化してみる |
・Linuxシェルスクリプト入門|初心者でも動かせる自動化の第一歩
・getoptsコマンドでbashスクリプトの引数を処理する方法
シェルスクリプトを書くための基礎、体系的に身につけていますか?
シェルスクリプトが上達するのは、コマンドの組み合わせ方を体系的に学んだ後です。ネットの断片情報を寄せ集めるより、まず土台となるLinuxサーバーの全体像を把握してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxを職場の上司から「任せる」と言われた瞬間の話|現役講師が語る責任の重さと成長の転換点
- 前のページへ:Linuxで初めてrootになった日の話|手が震えた経験と20年後に伝えたいroot運用の3つの心得
- この記事の属するカテゴリ:Linux学習ガイドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます