LPIC-1はLinux技術者としての登竜門とも言える資格であり、その中でも「シェルとシェルスクリプト」は重要な出題分野の一つです。シェルは単なるコマンド入力のインターフェースにとどまらず、日常的な作業を自動化するための強力なスクリプト言語でもあります。特にbash(Bourne Again Shell)は多くのLinux環境で標準として使用されており、変数、条件分岐、ループ処理など、基本的な構文を理解することは試験対策だけでなく、実務でも大いに役立ちます。この記事では、LPIC-1試験の対策として、bashの基本からスクリプトの書き方まで、初心者にもわかりやすく解説します。
bashとは?シェルの基本を押さえよう
シェルとは、ユーザーがLinuxと対話するための「窓口」であり、コマンドを入力することでOSに指示を出します。その中でも**bash(Bourne Again SHell)**は、最も一般的に利用されているシェルで、多くのディストリビューションでデフォルト設定になっています。
bashでは以下のような特徴があります:
- 入力したコマンドを順番に処理するインタプリタ型
- 変数の利用が可能
- 条件分岐や繰り返しなどの制御構文が使用できる
- スクリプトファイルとして処理を自動化できる
これらの特性により、bashは単なる「コマンド入力」ツールではなく、簡易的なプログラミング環境として活用されるのです。
シェルスクリプトの基本構造を理解する
シェルスクリプトとは、複数のコマンドをファイルにまとめ、1つのプログラムとして実行できるようにしたものです。基本的な構造は以下の通りです。
#!/bin/bash
# この行はシバンと呼ばれ、bashで実行することを指定しています
echo "Hello, world!"
このように、#!/bin/bash
から始まるファイルを作成し、実行権限を与えることで、コマンドを自動化するスクリプトとして動作させることができます。
chmod +x myscript.sh
./myscript.sh
シェルスクリプトは、日々の作業の効率化に欠かせないツールです。
変数の使い方と注意点
シェルスクリプトでの変数は、値を一時的に保存し、後の処理に使うために活用されます。変数の定義方法は以下の通りです。
name="Taro"
echo "Hello, $name"
ポイントとしては、以下を覚えておきましょう:
=
の前後にスペースを入れない- 変数の値を参照する際には
$
を付ける - 文字列の中で変数を使う場合はダブルクォーテーションで囲む
数値の計算には$(( ))
構文を使います。
a=5
b=3
sum=$((a + b))
echo "合計は $sum"
変数の使い方をマスターすることは、スクリプトを柔軟に制御するために欠かせません。
ユーザーからの入力を受け取る
スクリプトを動的に動かしたい場合、ユーザーからの入力を受け付けることが重要です。read
コマンドを使うことで実現できます。
echo "あなたの名前は?"
read username
echo "こんにちは、$usernameさん!"
このように、readコマンドは対話的なスクリプトに活用されます。
条件分岐(if文)の基本
シェルスクリプトでは、条件に応じて処理を分岐させるif文
がよく使われます。
if [ $a -gt $b ]; then
echo "aはbより大きい"
else
echo "aはb以下"
fi
条件式には以下のような比較演算子が使えます:
-eq
等しい-ne
等しくない-gt
より大きい-lt
より小さい-ge
以上-le
以下
また、文字列の比較では=
や!=
が使えます。
if [ "$name" = "Taro" ]; then
echo "こんにちは、Taroさん"
fi
繰り返し処理(for, while)の使い方
for文
リストに対して処理を繰り返すには、for
文を使います。
for i in 1 2 3 4 5; do
echo "数字は $i"
done
ファイルやディレクトリに対しても同様に使えます。
for file in *.txt; do
echo "$file を処理中..."
done
while文
条件を満たす限り繰り返す処理はwhile
文を使います。
count=1
while [ $count -le 5 ]; do
echo "回数: $count"
count=$((count + 1))
done
ループの中でbreak
やcontinue
を使うことで、制御をより柔軟にできます。
実践:シェルスクリプトで自動バックアップを作ろう
ここまでの知識を活かして、簡単なバックアップスクリプトを作ってみましょう。
#!/bin/bash
backup_dir="/home/user/backup"
source_dir="/home/user/documents"
date=$(date +%Y%m%d_%H%M%S)
filename="backup_$date.tar.gz"
mkdir -p "$backup_dir"
tar -czf "$backup_dir/$filename" "$source_dir"
echo "バックアップが完了しました: $filename"
このスクリプトでは以下の処理をしています:
- バックアップ先ディレクトリを作成
- 現在日時をファイル名に使う
tar
で圧縮して保存- 完了メッセージを表示
定期実行(cron)と組み合わせれば、業務の自動化にも応用できます。
スクリプトのデバッグ方法
スクリプトが思うように動かないときは、デバッグが必要です。以下の方法が役立ちます。
1. set -xを使う
スクリプトに以下を追加すると、実行されるコマンドが逐一表示されます。
set -x
2. echoで変数を確認
変数の中身を逐一echo
して、どこで期待と違う動きをしているか確認しましょう。
echo "変数xの値は: $x"
3. bash -x script.shで実行
コマンドラインから直接デバッグ実行も可能です。
bash -x myscript.sh
まとめ:試験対策と実務スキルの両立を目指して
シェルスクリプトは、単なる試験対策のためだけではなく、日々の業務効率化にも直結するスキルです。LPIC-1の範囲で問われるbashの基本、変数、条件分岐、繰り返し処理、スクリプト作成といった内容は、すべて実務にも活かせる実用的な知識ばかりです。
試験前には、実際にスクリプトを書いて、動かしてみることが一番の対策になります。特に以下のポイントをしっかり復習しておきましょう:
#!/bin/bash
の意味- 変数の扱い(代入・参照・計算)
- 条件分岐(if文)の構文と演算子
- ループ(for, while)の使い方
- スクリプトの作成・実行・デバッグ
これらを押さえておけば、LPIC-1の試験対策は万全です。ぜひ、自分の手を動かして習得していきましょう!