資格道場
記事

LinuC レベル1 102試験 頻出コマンド帳

コマンド入力の問題だけを、公式の出題範囲の重要度順に並べ直した109件です。1件ごとに「覚える形」「実際の書き方の例」「別解」「よくある間違いと、その理由」が読めます。同じ109件は、日本語の課題文を読んでコマンドを打ち、その場で採点されるドリルとしても解けます。

頻出コマンド帳は CCNA・LinuC 101/102/201/202 の5試験ぶんを用意していて、合計591件です。このページはそのうち LinuC レベル1 102試験 の109件を扱います。

どこまで無料で、どこからが購入者向けか

登録なしで、いま無料でできること

  • ドリルを5問、実際に打って採点まで(正解・不正解の理由まで出ます)
  • 一覧のうち12件を、意味・別解・よくある間違いの理由まで全文
  • 分野の名前と、分野ごとの件数(全109件の内訳)

問題集のご購入で解放されること

  • 一覧の残り97件の中身
  • ドリルの残り104問

コマンド帳はLinuC レベル1 102試験の問題集を買うと追加の料金なしで付いてきます。別売りではありません。

無料で公開しているのは、公式の出題範囲での重みが大きい順の上位12件です(毎回同じ12件で、ランダムには変わりません)。

分野別のコマンド一覧

分野の並びと重要度は、公式の出題範囲(Version 10.0)に載っている数値です。項目ごとの重要度。この試験の合計=60(1回の試験60問ぶんの配分)。

出典: https://linuc.org/linuc1/range/102.html
各コマンドに添えた「この問題集での登場◯回」は、当問題集でそのコマンドが模範解答として出た回数です。本試験での頻出度ではありませんので、並べ替えには使っていません。

1.06.2 シェルスクリプト

重要度 6・18

テーマ: シェルおよびスクリプト

  • コマンド重要度 6この問題集での登場 1回(参考値)

    bash -v <スクリプトファイル>

    実際の書き方の例: bash -v build.sh

    別解: bash --verbose build.sh

    bash -v(--verboseと同義)は、シェルが読み込んだ行を、変数展開などを行う前の記述通りの形でそのまま表示しながら実行する。実際に実行される内容(変数展開後)を表示する-x(デバッグモード)とは表示のタイミングと内容が異なる。

    よくある間違いと、その理由

    • bash -x build.sh-x(デバッグモード)は変数展開などを済ませた実際に実行される内容を表示するオプションであり、今回問われている『記述通りの行をそのまま表示する』動作とは異なる。
    • cat build.shcatはファイルの中身を表示するだけのコマンドであり、スクリプトを実行しながら1行ずつ表示していく動作にはならない。
    • bash -c build.sh-cは後に続く文字列をコマンドとして実行するためのオプションであり、スクリプトファイルを渡す通常の実行方法ではない。この形だとbuild.shという文字列自体がコマンドとして解釈されようとしてしまう。
  • コマンド重要度 6この問題集での登場 1回(参考値)

    bash -x <スクリプトファイル>

    実際の書き方の例: bash -x build.sh

    bash -x(set -xと同義)は、シェルスクリプト内の各コマンドを、変数展開などを済ませた実際に実行される形で、実行直前に+記号を付けて表示するデバッグ用のオプションである。行の読み込みそのものを表示するだけの-v(verboseモード)とは表示内容が異なり、-xは実際の実行内容の追跡に向く。

    よくある間違いと、その理由

    • bash -v build.sh-v(verbose)は実行前の行をそのまま表示するだけで、変数展開などを済ませた実際に実行された内容までは表示しない。今回問われているのは実行内容そのものを表示するデバッグモード(-x)である。
    • sh build.shオプションなしの実行では通常通りスクリプトを実行するだけで、各コマンドの実行内容は表示されない。
    • bash build.sh -x-xはbashコマンド自体へのオプションとして先頭側(スクリプト名の前)に置く必要がある。スクリプト名の後ろに置くとスクリプト自身への引数として渡されてしまい、デバッグモードは有効にならない。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    case $ANS in y) echo yes;; n) echo no;; esac

    別解: case "$ANS" in y) echo yes;; n) echo no;; esac

    case 値 in パターン1) 処理1;; パターン2) 処理2;; esac は、値を複数のパターンと順に照合し、一致した処理だけを実行する分岐構文である。各パターンの終わりは;;(セミコロン2つ)、パターンの区切りは)、構文全体の終わりはcaseを逆に綴ったesacで閉じる。

    よくある間違いと、その理由

    • case $ANS in y: echo yes;; n: echo no;; esaccase文の各パターンの後ろは:(コロン)ではなく)(閉じ括弧)で区切る構文である。コロンを使うと構文エラーになる。
    • if $ANS = y; then echo yes; elif $ANS = n; then echo no; fi文字列比較の条件式は[ "$ANS" = "y" ]のようにtestの角括弧記法で書く必要があり、if $ANS = y のように直接書くと構文エラーになる。今回はcase文での記述が問われている。
    • case $ANS of y) echo yes;; n) echo no;; esaccaseの後に続くキーワードはin(値の対象を導く)であり、ofではない。ofはシェルのcase構文には存在しない。
  • コマンド重要度 6この問題集での登場 1回(参考値)

    chmod <パーミッション> <対象>

    実際の書き方の例: chmod +x greet.sh

    別解: chmod a+x greet.sh / chmod ugo+x greet.sh

    chmod +x(chmod a+x、chmod ugo+xと同義)は、対象を指定しない場合に所有者・グループ・その他すべてに実行権限を追加する。所有者だけに追加したい場合はu+xのように対象を限定する必要があり、この対象指定の違いがシンボリックモードのポイントである。

    よくある間違いと、その理由

    • chmod u+x greet.shu+xは所有者だけに実行権限を追加する指定であり、グループやその他のユーザーには実行権限が付かない。今回問われているのはすべてのユーザーへの追加である。
    • chmod 644 greet.sh644は読み書き権限のみで実行権限を含まない数値指定であり、そのままでは実行できない。
    • chmod +r greet.sh+rは読み取り権限を追加する指定であり、実行権限(x)は追加されない。読み取り権限だけでは./greet.shの形式で直接実行することはできない。
  • コマンド重要度 6この問題集での登場 1回(参考値)

    chown <所有者> <対象>

    実際の書き方の例: chown user1 backup.sh

    chown 新しい所有者 ファイル は、指定したファイルの所有ユーザーを変更する。所有者:グループの形式でコロンを使うと同時にグループも変更でき、:グループのように先頭にコロンだけを付けるとグループのみを変更できる。今回のように所有者だけを変えたい場合はコロンを付けずユーザー名だけを指定する。

    よくある間違いと、その理由

    • chown user1: backup.shユーザー名の後ろにコロンを付けると、user1と同名のグループへもグループ所有者を変更する指定になる。今回問われているのは所有者(ユーザー)だけの変更であり、グループは変更しない条件である。
    • chown :user1 backup.sh先頭にコロンを付けた指定はグループ所有者だけを変更する書き方である。今回問われているのは所有者(ユーザー)の変更であり、対象が逆になっている。
    • chmod user1 backup.shchmodは権限(パーミッション)を変更するコマンドであり、所有者を変更するコマンドではない。所有者の変更にはchownを使う。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo $#

    別解: echo "$#"

    $#は、スクリプトや関数に渡された位置パラメータの個数を保持する特殊変数である。値そのものを展開する$*や$@、スクリプト名を保持する$0とは役割が異なる点が問われやすいポイントである。

    よくある間違いと、その理由

    • echo $*$*は位置パラメータすべての値を1つの文字列としてつなげて表示する特殊変数であり、個数(数値)ではない。
    • echo $@$@も位置パラメータの値そのものを展開する特殊変数であり、個数を表す変数ではない。
    • echo $0$0はスクリプト自身の名前(呼び出されたパス)を保持する特殊変数であり、位置パラメータの個数とは無関係である。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo $*

    別解: echo "$*"

    $*は、位置パラメータすべての値を、IFS(通常は空白)で区切った1つの文字列としてまとめて展開する特殊変数である。ダブルクオートで囲んだ場合の展開のされ方が$@と異なる(forループなどで差が表れる)点は、より進んだ話題として押さえておくとよい。

    よくある間違いと、その理由

    • echo $#$#は位置パラメータの個数(この場合3)を表示する特殊変数であり、値そのものを表示するものではない。
    • echo $1$2$3この書き方だと各値の間に空白が入らずabcのように連結されて表示されてしまう。今回問われているのは空白区切りでの表示である。
    • echo $@$@も位置パラメータの値を展開する特殊変数だが、今回の設問は明示的に$*を使うことを条件として指定している。単純にechoで表示するだけなら見た目の結果は同じになりやすいが、指定された記法で答える必要がある。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo $0

    別解: echo "$0"

    $0は、実行中のスクリプト自身が呼び出された際のパス(相対パス・絶対パスは呼び出し方に依存する)を保持する特殊変数である。$1以降が引数であるのに対し、$0はコマンド自身の名前という特別な位置づけになっている。

    よくある間違いと、その理由

    • echo $#$#は位置パラメータの個数を表す特殊変数であり、スクリプト自身のパスとは無関係である。
    • basename $0basenameを付けるとパスからディレクトリ部分を取り除いたファイル名部分だけになる。今回問われているのは$0の値そのもの(呼び出されたパス)の表示であり、加工は求められていない。
    • echo $PATH$PATHはコマンド検索パスの一覧を保持する環境変数であり、スクリプト自身の呼び出しパスとは全く別の情報である。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo $2

    別解: echo "$2" / echo ${2}

    $1、$2のように番号を付けた特殊変数で、対応する順番の位置パラメータの値を直接参照できる(${2}のように波括弧で囲む書き方も同義)。$#(個数)や、値を1つの文字列にまとめる$*・$@とは異なり、番号指定は特定の1つだけを取り出したいときに使う。

    よくある間違いと、その理由

    • echo $1$1は1番目の位置パラメータ(alpha)を指す。今回問われているのは2番目(beta)である。
    • echo $#$#は位置パラメータの個数(この場合3)を表示する特殊変数であり、個々の値を取り出すものではない。
    • shift; echo $1shiftを使うと位置パラメータ全体が1つずつ左にずれるため結果的に新しい$1(=beta)を表示できるが、元の$1(alpha)を失ってしまう副作用がある。今回問われているのは位置パラメータの構成を変えずに2番目の値を確認することである。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo $?

    別解: echo "$?"

    $?は直前に実行したコマンドの終了ステータス(0は正常終了、非0は異常終了)を保持する特殊なシェル変数であり、echoで参照すると表示できる。$$(自シェルのPID)や$!(直前のバックグラウンドジョブのPID)など見た目が似た特殊変数と混同しないことがポイントである。

    よくある間違いと、その理由

    • echo $!$!は直前にバックグラウンドで起動したプロセスのPIDを保持する特殊変数であり、終了ステータスではない。
    • echo $$$$は現在実行中のシェル自身のPIDを保持する特殊変数であり、直前のコマンドの終了ステータスとは無関係である。
    • exit $?exitは現在のシェル(またはスクリプト)自体を、指定したステータスで終了させるコマンドであり、値を画面に表示するものではない。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    echo ${USERNAME:-guest}

    別解: echo "${USERNAME:-guest}"

    ${変数:-代替値}は、変数が未設定または空の場合にだけ代替値を展開する記法で、変数自体への代入は行わない。似た記法の${変数:=代替値}は代入まで行い、${変数:+代替値}は逆に変数が設定されている場合にだけ代替値を使う。この3つの違いはシェルスクリプトの頻出ポイントである。

    よくある間違いと、その理由

    • echo ${USERNAME:=guest}:=は未設定の場合に代わりの値を表示するだけでなく、その値をUSERNAME自体に代入(設定)してしまう。今回問われているのは表示だけで、USERNAME自体は変更しない条件である。
    • echo $USERNAME単純な変数展開では、USERNAMEが未設定の場合は何も表示されない(空文字列になる)。今回問われているのは未設定の場合にguestという代替文字列を表示することである。
    • echo ${USERNAME:+guest}:+は指定した変数が『設定されている場合にだけ』代わりの値(guest)を表示する構文であり、動作が逆である。今回問われているのは未設定の場合に代替値を表示することであり、:-が正しい。
  • シェル構文重要度 6この問題集での登場 1回(参考値)

    exit 1

    exit <数値>は、シェルスクリプト(またはシェル自体)を指定した終了ステータスで直ちに終了させる。慣習として0は正常終了、1以上は何らかの異常終了を表す。引数を省略すると直前のコマンドの終了ステータスがそのまま使われる点も覚えておくとよい。

    よくある間違いと、その理由

    • return 1returnはシェル関数から抜けて呼び出し元へ戻る際に使うコマンドであり、スクリプト自体(プロセス全体)を終了させるものではない。
    • exit引数を省略したexitは、直前に実行したコマンドの終了ステータスをそのまま引き継いで終了する。今回問われているのは明示的に終了ステータス1を指定して終了することである。
    • break 1breakはfor/whileなどのループ処理を中断するコマンドであり、スクリプト全体を終了させるものではない。

この分野の残り6件は、問題集のご購入で解放されます。

1.08.1 アカウント管理

重要度 5・16

テーマ: システム管理

この分野の残り16件は、問題集のご購入で解放されます。

1.09.2 システムのログ

重要度 5・16

テーマ: 重要なシステムサービス

この分野の残り16件は、問題集のご購入で解放されます。

1.07.2 基本的なネットワーク構成

重要度 4・12

テーマ: ネットワークの基礎

この分野の残り12件は、問題集のご購入で解放されます。

1.07.3 基本的なネットワークの問題解決

重要度 4・11

テーマ: ネットワークの基礎

この分野の残り11件は、問題集のご購入で解放されます。

1.08.2 ジョブスケジューリング

重要度 4・6

テーマ: システム管理

この分野の残り6件は、問題集のご購入で解放されます。

1.08.3 ローカライゼーションと国際化

重要度 3・7

テーマ: システム管理

この分野の残り7件は、問題集のご購入で解放されます。

1.10.1 セキュリティ管理業務の実施

重要度 3・9

テーマ: セキュリティ

この分野の残り9件は、問題集のご購入で解放されます。

1.10.3 暗号化によるデータの保護

重要度 3・8

テーマ: セキュリティ

この分野の残り8件は、問題集のご購入で解放されます。

1.09.1 システム時刻の管理

重要度 2・6

テーマ: 重要なシステムサービス

この分野の残り6件は、問題集のご購入で解放されます。

まずは無料のドリル5問で、打って採点される感じを確かめてみてください。手応えがあれば、問題集のご購入でコマンド帳109件とドリル109問がそのまま解放されます。