QUIZ 15分

理解度チェック:ターミナルを制覇しよう

クイズの説明

Step 1で学んだ内容の理解度をチェックします。

  • 全8問
  • 合格ライン: 80%(7問正解)
  • 不合格の場合は復習してから再挑戦してください

問題

Q1. 以下のコマンドの出力として正しいものはどれですか?

bash
echo "apple banana cherry" | tr ' ' '\n' | sort -r | head -1
  • A) apple
  • B) banana
  • C) cherry
  • D) エラーになる
<details> <summary>答えを見る</summary>

正解: C

処理の流れ:

  1. echo で文字列を出力
  2. tr ' ' '\n' でスペースを改行に変換(各単語が1行に)
  3. sort -r で逆順(アルファベット降順)にソート → cherry, banana, apple
  4. head -1 で先頭1行を取得 → cherry
</details>

Q2. 標準エラー出力だけをファイルに保存するリダイレクトはどれですか?

  • A) command > errors.txt
  • B) command 2> errors.txt
  • C) command &> errors.txt
  • D) command >> errors.txt
<details> <summary>答えを見る</summary>

正解: B

  • > は標準出力(fd 1)のリダイレクト
  • 2> は標準エラー出力(fd 2)のリダイレクト
  • &> は標準出力と標準エラー出力の両方
  • >> は標準出力の追記
</details>

Q3. バックグラウンドで実行中のプロセスをフォアグラウンドに戻すコマンドはどれですか?

  • A) bg %1
  • B) fg %1
  • C) jobs %1
  • D) kill %1
<details> <summary>答えを見る</summary>

正解: B

  • fg %1 はジョブ番号1をフォアグラウンドに戻す
  • bg %1 はジョブ番号1をバックグラウンドで再開
  • jobs はジョブ一覧を表示
  • kill %1 はジョブ番号1を終了
</details>

Q4. 以下の awk コマンドが表示するものとして正しいのはどれですか?

bash
echo "Alice 85 Bob 92 Carol 78" | awk '{print $2, $4, $6}'
  • A) Alice Bob Carol
  • B) 85 92 78
  • C) Alice 85 Bob
  • D) エラーになる
<details> <summary>答えを見る</summary>

正解: B

awk はスペース区切りでフィールドを分割します。

  • $1 = Alice, $2 = 85
  • $3 = Bob, $4 = 92
  • $5 = Carol, $6 = 78

{print $2, $4, $6} は2番目、4番目、6番目のフィールド(85, 92, 78)を出力します。

</details>

Q5. &&|| の動作として正しいものはどれですか?

  • A) && は前のコマンドが失敗したら次を実行する
  • B) || は前のコマンドが成功したら次を実行する
  • C) && は前のコマンドが成功したら次を実行し、|| は失敗したら次を実行する
  • D) &&|| も結果に関係なく次を実行する
<details> <summary>答えを見る</summary>

正解: C

  • &&(AND): 前のコマンドが成功(終了コード0)したら次を実行
  • ||(OR): 前のコマンドが失敗(終了コード0以外)したら次を実行
  • ;: 前のコマンドの結果に関係なく次を実行

例: mkdir test && cd test はディレクトリ作成に成功したら移動

</details>

Q6. PATHについて正しい説明はどれですか?

  • A) PATHはファイルの保存場所を示す変数である
  • B) PATHはシェルがコマンドを検索するディレクトリのリストである
  • C) PATHはカレントディレクトリのパスを保持する変数である
  • D) PATHはホームディレクトリを指す変数である
<details> <summary>答えを見る</summary>

正解: B

PATH はシェルがコマンド(実行ファイル)を探すディレクトリの一覧です。 : で区切られた複数のディレクトリパスで構成されます。

例: PATH=/usr/local/bin:/usr/bin:/bin

コマンドを実行すると、PATH に列挙されたディレクトリを左から順に検索し、 最初に見つかった実行ファイルを実行します。

</details>

Q7. 以下のコマンドで、ログアウトしてもプロセスを継続させるのはどれですか?

  • A) command &
  • B) nohup command &
  • C) bg command
  • D) exec command
<details> <summary>答えを見る</summary>

正解: B

  • command & はバックグラウンド実行だが、ログアウト時にSIGHUPで終了する場合がある
  • nohup command & はSIGHUPシグナルを無視するため、ログアウト後も実行が続行される
  • bg は停止中のジョブをバックグラウンドで再開するコマンド
  • exec は現在のシェルを別のプロセスに置き換える
</details>

Q8. 以下のパイプラインの目的として正しいものはどれですか?

bash
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5
  • A) ログファイルの最初の5行を表示する
  • B) ログファイルから重複行を削除する
  • C) アクセス元IPアドレスの上位5件を頻度順に表示する
  • D) ログファイルを逆順にソートする
<details> <summary>答えを見る</summary>

正解: C

処理の流れ:

  1. cat access.log → ログファイルを出力
  2. awk '{print $1}' → 1列目(通常はIPアドレス)を抽出
  3. sort → アルファベット順にソート(uniq のため必須)
  4. uniq -c → 連続する重複をカウント
  5. sort -rn → カウント数の降順にソート
  6. head -5 → 上位5件を表示

これはアクセスログ解析の定番パターンです。

</details>

結果

7問以上正解の場合

合格です。おめでとうございます。

Step 1「ターミナルを制覇しよう」を完了しました。 次は Step 2「シェルスクリプトの魔法を習得しよう」に進みましょう。

6問以下の場合

もう少し復習しましょう。

間違えた問題の内容を、該当するセクションで復習してください:

問題復習セクション
Q1, Q4step1_2 上級コマンド(sort, awk)
Q2, Q8step1_3 パイプとリダイレクト
Q3, Q7step1_4 プロセス管理
Q5, Q6step1_5 環境変数とPATH

Step 1 完了

お疲れさまでした。

学んだこと

  • 上級コマンド: sort, uniq, cut, tr, sed, awk, xargs
  • パイプとリダイレクト: |, >, >>, 2>, /dev/null
  • コマンド連結: &&, ||, ;
  • プロセス管理: ps, top, kill, bg, fg, nohup
  • 環境変数: export, PATH, .bashrc, alias

次のステップ

Step 2: シェルスクリプトの魔法を習得しよう(4時間)

ここまでの知識を「スクリプト」にまとめ、繰り返し使える自動化ツールとして仕上げます。


推定所要時間: 15分