「マスタリングLinuxシェルスクリプト」を紹介
Linuxのコマンドを一つずつ実行する段階から、複数の処理を組み合わせて自動化する段階へ進みたい人に向いた一冊です。
- 書名
- マスタリングLinuxシェルスクリプト
- 対象
- Linuxの基本操作を学んだ人、シェルスクリプトを実務で使いたい人
- テーマ
- コマンド操作、自動化、変数、条件分岐、繰り返し、関数、ファイル処理
- 形式
- サンプルを読みながら段階的に学ぶ実践的な技術書
書籍の詳細や最新の価格・在庫はAmazonの商品ページでご確認ください。
Linuxを使っていると、ファイルを探す、ログを確認する、バックアップを作る、複数のコマンドを順番に実行するといった作業が何度も登場します。最初はターミナルへコマンドを入力すれば済みますが、同じ手順を繰り返すうちに「一度書いた処理を保存して、必要なときに実行したい」と感じるようになります。
シェルスクリプトは、シェルへ入力していたコマンドをファイルへまとめ、変数、条件分岐、繰り返し、関数などを加えて処理を自動化する仕組みです。Linux入門で基本コマンドを学んだあとに、より実用的な自動化へ進むためのテーマとして取り組みやすい分野です。
『マスタリングLinuxシェルスクリプト』は、コマンドを知っているだけでは作れない、失敗時の扱い、入力の受け取り、ファイルや文字列の処理、繰り返し実行するための設計などを考えるきっかけになります。単なるコマンド集ではなく、作業をスクリプトへ変える考え方を身につけたい人に向いています。
コマンドを知っている人が次に迷うこと
ls、grep、find、sed、awkなどを個別に使えるようになっても、それだけでは自動化のコードになりません。実際のスクリプトでは、次のような判断が必要になります。
- 処理対象のファイル名をどのように変数へ入れるか
- ファイルが存在しない場合に何を表示して終了するか
- 複数のファイルをどのように順番に処理するか
- コマンドが失敗したとき、後続の処理を続けてよいか
- 別の場所から実行しても正しく動くパスをどう作るか
- あとから読んだ人が安全に変更できる構成にするにはどうするか
この差が、短いワンライナーと保守できるシェルスクリプトの違いです。本書を読むときは、文法を暗記するだけでなく、「この処理を毎日実行するとしたら何を確認すべきか」という視点を持つと、内容を自分の作業へ結び付けやすくなります。
この本で学びたいシェルスクリプトの基本
1. スクリプトの入口を作る
シェルスクリプトは、どのシェルで実行するかを明示し、実行権限を設定して使います。Bashを使う場合は、ファイルの先頭にシバンを書きます。
#!/usr/bin/env bash
set -u
name="Mity"
printf 'こんにちは、%sさん。\n' "$name"#!/usr/bin/env bashは、環境からBashを探して実行する指定です。set -uは未定義の変数を使ったときにエラーにする設定で、入力漏れに気付きやすくなります。変数を展開するときは、意図しない空白分割を防ぐために"$name"のように引用符で囲みます。
2. コマンドの終了ステータスを扱う
Linuxのコマンドは、成功・失敗を終了ステータスで返します。一般に0は成功、それ以外は失敗です。スクリプトでは表示結果だけでなく、終了ステータスも判断材料になります。
if [[ -f "settings.conf" ]]; then
printf '設定ファイルがあります。\n'
else
printf '設定ファイルがありません。\n' >&2
exit 1
fi標準出力と標準エラー出力を分けることで、通常の結果とエラーメッセージを別々に扱えます。呼び出し元へ失敗を伝えるためにexit 1を使う考え方は、定期実行やCIで特に重要です。
3. ファイル処理を安全に行う
バックアップやログ整理では、対象が存在するか、ディレクトリか、読み取り可能かを確認してから処理します。いきなり削除するのではなく、まず対象を表示する確認段階を作ることが大切です。
log_dir="./logs"
if [[ ! -d "$log_dir" ]]; then
printf 'ディレクトリがありません: %s\n' "$log_dir" >&2
exit 1
fi
count=$(find "$log_dir" -type f -name '*.log' | wc -l)
printf 'ログファイル: %s件\n' "$count"パスを変数へ入れておくと、対象の変更や再利用がしやすくなります。findのパターンを引用符で囲むのは、ファイル名の展開をシェルではなくfindに任せるためです。
実務で役立つ自動化へつなげる
バックアップと定期処理
シェルスクリプトの分かりやすい用途は、指定したディレクトリをバックアップし、日時を付けて保存する処理です。実際に運用する場合は、保存先の空き容量、権限、世代管理、失敗時の通知まで考える必要があります。
source_dir="./project"
backup_dir="./backup"
timestamp=$(date '+%Y%m%d-%H%M%S')
archive="$backup_dir/project-$timestamp.tar.gz"
mkdir -p "$backup_dir"
tar -czf "$archive" "$source_dir"
printf '作成しました: %s\n' "$archive"ここでも、変数を引用し、保存先を明示しています。大切なデータに対して試す前に、練習用ディレクトリで実行結果を確認してください。バックアップは「作成できた」と表示するだけでなく、ファイルが存在することやサイズを確認する処理を加えると、より安全になります。
ログの集計とテキスト処理
シェルは、行単位のログを調べる作業とも相性がよい言語です。grepで対象を絞り、cutやawkで列を取り出し、sortやuniqで集計するという流れを作れます。
grep 'GET ' access.log \
| awk '{print $1}' \
| sort \
| uniq -c \
| sort -nrパイプは、左のコマンドの標準出力を右のコマンドへ渡します。短く書ける一方で、入力形式が変わると結果も変わるため、実データの例外や空行を確認しながら使います。書籍では、このような小さなコマンドを組み合わせて大きな処理を作る考え方も重要なテーマになります。
安全に書くために知っておきたいこと
引用符を省略しない
ファイル名に空白が含まれる可能性がある場合、変数を引用しないと一つのパスが複数の引数に分かれます。習慣として、パスやユーザー入力の変数は引用するようにします。
削除処理をすぐ追加しない
rmを含むスクリプトは、対象の表示、件数確認、ドライラン、実行の順に作ります。ワイルドカードの展開先を確認せずに削除する処理を定期実行へ登録してはいけません。
エラーを隠さない
失敗しても次の処理へ進んでしまうスクリプトは、途中までしか完了していないのに成功したように見えることがあります。set -e、set -u、set -o pipefailの意味を理解し、処理の性質に合わせて使います。設定を機械的に追加するのではなく、条件分岐や終了ステータスを確認することが大切です。
この本をおすすめしたい人
- Linuxの基本コマンドを使えるようになり、作業を自動化したい人
- サーバー管理や開発環境のセットアップを繰り返している人
- バックアップ、ログ調査、ファイル整理をスクリプト化したい人
- Bashの文法だけでなく、安全な書き方や実務的な考え方を学びたい人
- ワンライナーを組み合わせて、再利用できるツールへ育てたい人
購入前に知っておきたいこと
Linuxの基本操作があると読みやすい
シェルスクリプトはコマンドを実行する環境の上に成り立つため、cd、ls、cat、grep、パイプ、リダイレクトなどに慣れていると内容を追いやすくなります。まだターミナル操作が初めてなら、先にLinux入門でファイルや権限を確認しましょう。
実行環境による差を確認する
シェルにはBash、sh、zshなどがあり、利用できる構文や初期設定に差があります。サンプルを動かすときは、シバン、Bashのバージョン、コマンドのオプションを確認してください。macOSやLinux、コンテナでは同じコマンド名でも版が異なる場合があります。
読んだだけでは身につきにくい
シェルスクリプトは、実行結果とエラーメッセージを読む経験が重要です。短いコードを書き、変数を変更し、ファイルがない場合や空の入力を試すことで、書籍の内容が実際の判断へ変わっていきます。
おすすめの読み進め方
- コマンドを手で実行する:サンプルをスクリプトへ貼り付ける前に、一つずつターミナルで実行し、標準出力と終了ステータスを確認します。
- 短いスクリプトへまとめる:変数を一つ追加し、パスを固定値から変更できるようにします。
- 異常系を試す:ファイルを移動する、空のディレクトリにする、権限を変えるなどして、失敗時の表示を確認します。
- 自分の作業へ置き換える:バックアップ、ログ検索、画像整理など、毎回行っている作業を一つ選びます。
- 定期実行は最後にする:手動実行で何度も確認し、ログと失敗時の動きを決めてからcronなどへ登録します。
当サイトの学習コンテンツとの使い分け
当サイトのシェルスクリプト入門では、環境の確認、変数、条件分岐、繰り返し、関数、ファイル処理、安全な書き方、練習問題を、短いコードと実行結果に分けて説明します。
本書は、より多くの実例を読みながら、シェルスクリプトを実務の道具として使う視野を広げるのに向いています。サイトでコードを実行して基礎を確認し、本書で別の書き方や運用上の注意を学び、もう一度自分の作業へ戻すという使い方がおすすめです。
まとめ
シェルスクリプトは、Linuxのコマンドを順番に実行するだけの仕組みではありません。入力の扱い、条件判断、繰り返し、失敗時の終了、ファイル名の安全な扱いなどを組み合わせて、何度も使える小さなプログラムを作る技術です。
Linuxを使った作業を自動化したい人、サーバーや開発環境の手順を再利用したい人にとって、『マスタリングLinuxシェルスクリプト』は次の学習テーマを見つけるきっかけになります。まずは練習用ディレクトリを作り、短いスクリプトを実行するところから始めてみてください。
書籍の詳細を確認する
価格や在庫、電子書籍版の有無はAmazonの商品ページでご確認ください。
Amazonで見る →当サイトはAmazonアソシエイト・プログラムの参加者です。