コース一覧
LinuC レベル1(LPIC-1対応)対策
スクリプトの制御

LinuC レベル1(LPIC-1対応)対策

ブートとsystemd、パッケージ管理(APT/RPM両系統)、コマンドとviの操作、ファイルシステム、シェルスクリプト、ユーザー管理とセキュリティ、ネットワークまで、LinuC レベル1(LPIC-1対応)の全出題範囲を、毎レッスン実際にコマンドを打って確かめながら学べる対策コースです。ブラウザの中で本物の Debian 12 が動いていて、62レッスンのうち36本は読むだけで終わらず、自分の手でコマンドを打った結果で採点されます。Linux入門を修了した方を対象としています。101・102それぞれの模試60問で分野別の弱点を洗い出し、直前チェックで暗記事項を固めてから本番に臨めます。

1
試験ガイダンス
01. LinuC/LPICとは15分
02. LinuCとLPICの選び方15分
03. 学習計画15分
04. 出題形式を体験15分
2
101 ブートとアーキテクチャ
01. ブートの流れ18分
02. GRUB15分
03. systemdとターゲット18分
04. ハードウェア情報18分
05. カーネルモジュール18分
06. 過去問 アーキテクチャ15分
3
101 パッケージ管理
01. Debian系パッケージ18分
02. RPM系パッケージ15分
03. 両系統の対応表15分
04. リポジトリ管理18分
05. 共有ライブラリ18分
06. 過去問 パッケージ管理15分
4
101 GNU/Unixコマンド
01. ファイル操作の試験オプション18分
02. テキスト処理18分
03. ストリームとリダイレクト18分
04. プロセス監視18分
05. 優先度18分
06. grepと正規表現18分
07. viの操作15分
08. 過去問 コマンド15分
5
101 ファイルシステム
01. パーティション15分
02. 作成とマウント18分
03. fstabとUUID18分
04. パーミッションとリンク18分
05. 容量とクォータ18分
06. findとlocate18分
07. 過去問 ファイルシステム15分
6
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
7
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
8
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
9
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分
10
模試と直前対策
01. 模試 10190分
02. 101弱点復習15分
03. 模試 10290分
04. 102弱点復習15分
05. 直前チェック15分
06. 受験と次のステップ15分

スクリプトの制御

出題は「このスクリプトを実行すると何が出力されるか」という形で来ます。書けるだけでは足りず、読めないと当たりません。似た言語の記憶で書くと必ず外すので、シェル独自の形として覚え直します。

なお、1行目の #! から始まる行をシバンと呼び、どのインタプリタで実行するかを指定します。効くのは実行権限を付けて ./script.sh と直接起動したときだけで、bash script.sh のようにインタプリタを明示した場合はただのコメントとして無視されます。

for は3つの書き方がある

リスト形式が基本です。空白で区切られた要素を左から順に取り出します。

ターミナル

for fruit in apple banana cherry; do echo "$fruit" done

数値の並びは、外部コマンドの seq か bash のブレース展開で作ります。

ターミナル

for n in $(seq 1 3); do echo "$n"; done for n in {1..3}; do echo "$n"; done for n in {0..10..2}; do echo "$n"; done # 2 ずつ。bash 4 以降

ブレース展開はシェルの機能なので外部コマンドを呼びませんが、{1..$N} のように変数を書くと展開されません。変数で回数を決めるなら seq か C 言語形式を使います。

ターミナル

for ((n = 0; n < 3; n++)); do echo "$n" done

初期化と継続条件と更新をセミコロンで区切ります。この形は bash の拡張で sh では動きません。for arg in "$@" と書けば、スクリプトに渡された引数を順に処理できます。

while と until は条件が裏返し

while は条件が真である間、until は条件が真になるまで繰り返します。条件を反転させれば同じ動きになります。

ターミナル

n=1 while [ "$n" -le 3 ]; do echo "$n" n=$((n + 1)) done

$((...)) は算術展開で、中では変数に $ を付けなくても構いません。ファイルを1行ずつ処理する while read も定番です。

ターミナル

while read line; do echo "[$line]" done < /etc/hostname

read は標準入力から1行読んで変数に入れ、入力が尽きると 0 以外を返すのでループが止まります。break はループを抜け、continue は残りをとばして次の繰り返しへ進みます。break 2 のように数字を付けると、その数だけ外側のループまで抜けます。

case の閉じは esac、分岐の終わりは ;;

ターミナル

case "$mode" in start) echo starting ;; stop|halt) echo stopping ;; *) echo usage ;; esac

パターンの後ろは閉じ括弧だけで、開き括弧は要りません。各分岐の終わりは ;; で、セミコロン1つでは足りません。複数のパターンは縦棒で並べます。*) は何にも一致しなかったときの既定の分岐で、最後に置きます。全体を閉じるのは esac です。

パターンにはワイルドカードが使えます。C 言語の switch と違い、一致した分岐を実行したらそこで case を抜けるので break は不要です。

引数は特殊変数で受け取る

変数意味
$0スクリプト自身の名前
$1 $2 …1番目、2番目の引数。10 番目以降は ${10}
$#引数の個数。$0 は数に入らない
$@全引数。"$@" は1つずつ別の語として展開される
$*全引数。"$*" は全部つないで1つの語になる
$?直前のコマンドの終了ステータス。0 が成功
$$実行中のシェルのプロセス ID

shift は位置パラメータを1つ前へずらします。$2 が $1 になり、$# が1減ります。exit はスクリプトを終了し、exit 0 が成功、それ以外が失敗の合図です。

試験で狙われるところ

case の閉じは esac、if は fi、ループは done です。case の各分岐は ;; で終えます。C 言語形式の for ((...)) は bash 拡張で #!/bin/sh では動きません。$# に $0 は含まれません。そして "$@" と "$*" は展開のされ方が違います。

ヒント

ヒアドキュメントは cat <<'EOF' > /root/grade.sh で始め、最後に EOF だけの行を書いて閉じます。EOF をシングルクォートで囲むと $1 や $sum がそのまま書き込まれます

case のパターンは 90) のように閉じ括弧だけを書きます。各分岐の終わりは ;; の2つ、全体の閉じは esac です

足し算は算術展開 $((sum + i)) です。for i in 1 2 3 4 5 でも for i in {1..5} でも構いません

  • 1. cat <<'EOF' > /root/grade.sh の形でスクリプトを書き出す
  • 2. 1行目にシバン #!/bin/bash を書く
  • 3. case "$1" in 90) echo A ;; 70) echo B ;; *) echo C ;; esac で評語を判定する
  • 4. sum=0 としてから for i in 1 2 3 4 5 で回し、sum=$((sum + i)) で足していく
  • 5. echo "SUM $sum" で合計を表示する
  • 6. chmod +x /root/grade.sh で実行権限を付ける
  • 7. bash /root/grade.sh 90 などを実行して出力を確かめる

6 項目で採点します