LinuCレベル1 ⑥ シェルおよびスクリプト

作業を自動化するための仕組みを扱う、出題数が最多の分野です。シェルでは環境変数とシェル変数の違い、設定ファイルの読み込み順序、エイリアスと関数、コマンド履歴の活用が基礎になります。スクリプトでは変数の扱い、条件分岐と繰り返し、コマンドの終了ステータスによる判定、引数の受け取り、関数の定義が中心テーマです。実務での自動化に直結する領域であり、手を動かして書いてみることで理解が深まります。

この分野の問題70問を、選択肢・正解・解説つきで掲載しています。まず自分で解答を考えてから「正解と解説を見る」を開いて答え合わせをしてください。

クイズモードで挑戦 →

306ログインシェルとしてbashが起動した際、最初に読み込まれる設定ファイルはどれか。

  1. A~/.bash_profile
  2. B/etc/profile
  3. C~/.bashrc
  4. D~/.profile
正解と解説を見る

正解:B/etc/profile

ログインシェル起動時は、まずシステム全体の設定である/etc/profileが読み込まれる。

この問題の解説ページを開く →

307bashをログインシェルとして起動したとき、各ユーザのホームディレクトリ内で最も優先して読み込まれるファイルはどれか。

  1. A~/.profile
  2. B~/.bash_login
  3. C~/.bash_profile
  4. D~/.bashrc
正解と解説を見る

正解:C~/.bash_profile

/etc/profileの次に、~/.bash_profile、~/.bash_login、~/.profileの順で存在確認され、最初に見つかったものが一度だけ読み込まれる。

この問題の解説ページを開く →

308ユーザがログインした後にターミナルエミュレータを開いて起動する「非ログインシェル」で、起動のたびに読み込まれる設定ファイルはどれか。

  1. A~/.bash_profile
  2. B~/.bash_logout
  3. C/etc/profile
  4. D~/.bashrc
正解と解説を見る

正解:D~/.bashrc

非ログインシェルとしてbashが起動した場合、ホームディレクトリに~/.bashrcがあれば読み込まれる。

この問題の解説ページを開く →

309~/.bash_profileのパーミッションとして正しい説明はどれか。

  1. A実行権が必要である
  2. Brootユーザの所有でなければならない
  3. C先頭行にシバン(#!/bin/bash)の記述が必要である
  4. D読み取り権が必要である
正解と解説を見る

正解:D読み取り権が必要である

bashが読み取って実行する設定ファイルであるため読み取り権は必要だが、通常のスクリプトのような実行権やシバンは不要である。

この問題の解説ページを開く →

310bashのログインシェルが終了するとき(ログアウト時)に実行されるファイルはどれか。

  1. A~/.bash_logout
  2. B~/.bash_exit
  3. C/etc/profile
  4. D~/.bashrc
正解と解説を見る

正解:A~/.bash_logout

ログインシェルとしてのbashが終了する際には~/.bash_logoutが実行される。

この問題の解説ページを開く →

311ユーザのログインシェルはシステムのどのファイルで指定されているか。

  1. A/etc/passwd
  2. B/etc/shadow
  3. C/etc/group
  4. D/etc/shells
正解と解説を見る

正解:A/etc/passwd

/etc/passwdファイルの最後のフィールド(7番目のフィールド)でユーザのログインシェルが指定されている。

この問題の解説ページを開く →

312RedHat系のディストリビューションにおいて、非ログインシェル起動時にどのユーザにも共通した設定を行うファイルはどれか。

  1. A/etc/bash.bashrc
  2. B/etc/profile
  3. C/etc/bashrc
  4. D~/.bashrc
正解と解説を見る

正解:C/etc/bashrc

RedHat系では/etc/bashrcが使われ、各ユーザの~/.bashrcから読み込まれる仕組みになっている。

この問題の解説ページを開く →

313Ubuntuのデフォルト設定において、ログイン時にも/etc/bash.bashrcを実行させたい場合、どのように設定を行うか。

  1. A/etc/bash.bashrcに実行権を付与する
  2. B/etc/profile内に/etc/bash.bashrcを読み込む記述を追加する
  3. C~/.bashrcのファイル名を変更する
  4. Dログインシェルを/etc/bash.bashrcに変更する
正解と解説を見る

正解:B/etc/profile内に/etc/bash.bashrcを読み込む記述を追加する

/etc/bash.bashrcはデフォルトでは非ログインシェルでのみ読み込まれるため、ログイン時にも実行したい場合は/etc/profile等から呼び出す。

この問題の解説ページを開く →

314CentOSやFedoraで/etc/bash.bashrcが使用不可となっている理由は何か。

  1. Aデフォルトでファイルが削除されているため
  2. BRedHat系では/etc/profileがその役割を完全に代替しているため
  3. Crootユーザしかアクセスできないパーミッションになっているため
  4. Dbashのソースコード中のマクロ定義が無効にされてコンパイルされているため
正解と解説を見る

正解:Dbashのソースコード中のマクロ定義が無効にされてコンパイルされているため

bashのコンパイル時にマクロ定義「#define SYS_BASHRC /etc/bash.bashrc」を無効にしているディストリビューションでは使用できない。

この問題の解説ページを開く →

315コマンド「cmd」の実行結果をシェル変数「var」に格納する正しい記述はどれか。

  1. Avar=$((cmd))
  2. Bvar="exec cmd"
  3. Cvar=$(cmd)
  4. Dvar=$cmd
正解と解説を見る

正解:Cvar=$(cmd)

コマンドの実行結果を変数に代入するには「$(コマンド)」またはバッククォート「`コマンド`」を用いる。

この問題の解説ページを開く →

316コマンドの実行結果を変数に代入するバッククォートを用いた記述として正しいものはどれか。

  1. Avar='cmd'
  2. Bvar=\\cmd
  3. Cvar="cmd"
  4. Dvar=`cmd`
正解と解説を見る

正解:Dvar=`cmd`

バッククォート「`」でコマンドを囲むことで、その実行結果をシェル変数に代入できる。

この問題の解説ページを開く →

317変数代入「var=$((1+2))」を実行すると、変数varには何が格納されるか。

  1. A$((1+2))
  2. B1+2
  3. Ccmd
  4. D3
正解と解説を見る

正解:D3

二重括弧「(())」は算術演算で使用され、中の計算式が評価された結果が代入される。

この問題の解説ページを開く →

318シェルスクリプト「script.sh」内で「export ABC=123」を記述した。この変数を現在のシェルに反映させるための実行方法はどれか。

  1. Abash script.sh
  2. B./script.sh
  3. Csource script.sh
  4. Dexec script.sh
正解と解説を見る

正解:Csource script.sh

sourceコマンド(またはドットコマンド)を使って現在のシェル内で実行することで、環境変数が引き継がれる。

この問題の解説ページを開く →

319「source script.sh」と同じ結果をもたらすコマンドラインはどれか。

  1. A./script.sh
  2. B. script.sh
  3. Cbash script.sh
  4. Dexec script.sh
正解と解説を見る

正解:B. script.sh

ドット「.」コマンドはsourceコマンドと同義であり、現在のシェル内部でスクリプトを読み込み実行する。

この問題の解説ページを開く →

320関数「myfunc」を実行すると「Hello」と表示させたい。bashで関数を定義する正しい構文はどれか。

  1. Afunction myfunc() { echo Hello; }
  2. Bfunction myfunc { echo Hello }
  3. Cmyfunc() [ echo Hello ]
  4. Dfunc myfunc() { echo Hello }
正解と解説を見る

正解:Afunction myfunc() { echo Hello; }

bashで関数を定義するには「function 関数名() { コマンド; }」の構文を用いる。

この問題の解説ページを開く →

321シェル内で定義された関数はどのように実行されるか。

  1. A新たな子プロセスを生成して実行される
  2. Bバックグラウンドプロセスとして実行される
  3. C現在のシェルの内部で実行され、子プロセスは生成されない
  4. D自動的に/etc/profileに保存されてから実行される
正解と解説を見る

正解:C現在のシェルの内部で実行され、子プロセスは生成されない

組み込みコマンドfunctionで定義された関数はシェル内部で実行され、シェルスクリプトのように子プロセスを生成しない。

この問題の解説ページを開く →

322シェル内の「すべてのシェル変数」「環境変数」および「関数」を一覧表示するコマンドはどれか。

  1. Aset
  2. Bexport
  3. Cenv
  4. Ddeclare -p
正解と解説を見る

正解:Aset

setコマンドを実行すると、シェル内のシェル変数、環境変数、関数のすべてが表示される。declare -pは変数の属性と値のみを表示し関数は含まれない。

この問題の解説ページを開く →

323シェル内で定義されている「関数のみ」を表示するコマンドオプションはどれか。

  1. Aset -f
  2. Benv -f
  3. Cdeclare -f
  4. Dalias -f
正解と解説を見る

正解:Cdeclare -f

declareコマンドに-fオプションを付けることで、関数のみを一覧表示することができる。

この問題の解説ページを開く →

324長いコマンドやオプション群に別名を付けて、入力の手間を省くためのコマンドはどれか。

  1. Aln
  2. Bset
  3. Calias
  4. Dexport
正解と解説を見る

正解:Calias

aliasコマンドを使用すると、コマンドに任意の短い別名を付け、その別名でコマンドを実行できるようになる。

この問題の解説ページを開く →

325オプションを含めて別名を設定する際、正しい囲み記号の使い方はどれか。

  1. Aalias ls=ls -la
  2. Balias ls=`ls -la`
  3. Calias ls='ls -la'
  4. Dalias ls=(ls -la)
正解と解説を見る

正解:Calias ls='ls -la'

引用符で囲まないとスペース以降が別のエイリアス指定として扱われ、オプション込みの別名にならない。オプションを含む場合はシングルクォート「' '」で囲む。

この問題の解説ページを開く →

326設定した別名(エイリアス)を削除するコマンドはどれか。

  1. Adelalias
  2. Brmalias
  3. Cunset
  4. Dunalias
正解と解説を見る

正解:Dunalias

設定された別名を削除するにはunaliasコマンドを使用する。

この問題の解説ページを開く →

327aliasコマンドを引数なしで実行した場合の動作はどれか。

  1. A現在設定されている別名が一覧で表示される
  2. Bエラーメッセージが表示される
  3. Cすべての別名設定が解除される
  4. D~/.bashrcの設定が再読み込みされる
正解と解説を見る

正解:A現在設定されている別名が一覧で表示される

aliasコマンドを引数なしで実行すると、現在設定されているエイリアスの一覧が表示される。

この問題の解説ページを開く →

328設定されている「ls」のエイリアスを一時的に無効化し、本来のlsコマンドを実行する方法はどれか。

  1. Als --noalias
  2. B\\ls
  3. Cunset alias ls
  4. Dalias ls
正解と解説を見る

正解:B\\ls

コマンドの先頭にバックスラッシュ「\\」を付けることで、一時的にaliasを解除して元のコマンドを実行できる。

この問題の解説ページを開く →

329「echo $#」を実行した際に表示されるものは何か。

  1. A実行ファイル名
  2. BシェルのPID
  3. C最後に実行したコマンドの終了値
  4. D引数の個数
正解と解説を見る

正解:D引数の個数

特殊なシェル変数「$#」には、スクリプトに渡された引数の個数が格納されている。

この問題の解説ページを開く →

330最後に実行したコマンドの終了ステータス(終了値)を格納している特殊変数はどれか。

  1. A$$
  2. B$0
  3. C$*
  4. D$?
正解と解説を見る

正解:D$?

「$?」には直前に実行したコマンドの終了ステータスが格納され、成功したかどうかの確認に用いられる。

この問題の解説ページを開く →

331現在実行中のシェルのPID(プロセスID)を格納している特殊変数はどれか。

  1. A$$
  2. B$!
  3. C$?
  4. D$@
正解と解説を見る

正解:A$$

「$$」には実行中のシェルのPIDが格納されている。

この問題の解説ページを開く →

332区切り文字で区切られたすべての引数を1つの変数として扱う特殊変数はどれか。

  1. A$0
  2. B$#
  3. C$*
  4. D$?
正解と解説を見る

正解:C$*

「$*」または「$@」は、スクリプトに与えられたすべての引数を表す特殊変数である。

この問題の解説ページを開く →

333実行中のシェルスクリプト自身のファイル名が格納されている特殊変数はどれか。

  1. A$1
  2. B$0
  3. C$$
  4. D$*
正解と解説を見る

正解:B$0

「$0」には実行ファイル名(スクリプト名)が格納される。「$1」以降は引数となる。

この問題の解説ページを開く →

334コマンドが正常終了した場合、終了値(終了ステータス)として返される数値はどれか。

  1. A0
  2. B1
  3. C-1
  4. D255
正解と解説を見る

正解:A0

POSIX準拠のLinuxコマンドは、正常終了時に「0」を返し、失敗時に0以外を返す。

この問題の解説ページを開く →

335コマンドの終了値として「0以外」が返ってきた場合、それは何を意味しているか。

  1. Aコマンドが正常終了した
  2. Bバックグラウンドで実行中である
  3. Cコマンドが失敗(エラー)した
  4. D警告が発生したが処理は完了した
正解と解説を見る

正解:Cコマンドが失敗(エラー)した

コマンドの終了値において、0以外はコマンドの失敗やエラーを意味する。

この問題の解説ページを開く →

336trueコマンドを実行した直後に「echo $?」を実行すると何が表示されるか。

  1. Atrue
  2. B1
  3. C0
  4. D何も表示されない
正解と解説を見る

正解:C0

trueコマンドは常に正常終了するため、終了ステータスとして「0」を返す。

この問題の解説ページを開く →

337falseコマンドを実行した直後に「echo $?」を実行すると何が表示されるか。

  1. A1
  2. B0
  3. Cfalse
  4. D何も表示されない
正解と解説を見る

正解:A1

falseコマンドは常に失敗を表すため、終了ステータスとして「1」を返す。

この問題の解説ページを開く →

338シェルスクリプトの1行目に記述される、解釈実行するインタプリタを指定する文字列「#!/bin/bash」の「#!」を何と呼ぶか。

  1. Aエスケープシーケンス
  2. Bマジックナンバー
  3. Cシバン (shebang)
  4. Dデリミタ
正解と解説を見る

正解:Cシバン (shebang)

1行目の「#!」に続いてインタプリタのパスを書く仕組みをシバン (shebang) と呼ぶ。

この問題の解説ページを開く →

339スクリプトファイル「script.sh」を「./script.sh」として直接実行するために必要な権限の組み合わせとして正しいものはどれか。

  1. A読み込み権のみ
  2. B実行権のみ
  3. C読み込み権と書き込み権
  4. D読み込み権と実行権
正解と解説を見る

正解:D読み込み権と実行権

バイナリと異なり、シェルスクリプトを直接実行するにはインタプリタが中身を読むための読み込み権と、プログラムとして起動するための実行権の両方が必要。

この問題の解説ページを開く →

340「bash sample.sh」のように、bashコマンドの引数としてシェルスクリプトを実行する場合、スクリプトファイルに最低限必要な権限はどれか。

  1. A実行権
  2. B書き込み権と実行権
  3. C読み込み権と実行権
  4. D読み込み権
正解と解説を見る

正解:D読み込み権

インタプリタ(bash)にファイルを渡して実行させる場合、ファイルの中身を読み取れればよいため、実行権は不要で読み込み権のみで実行できる。

この問題の解説ページを開く →

341スクリプト「#!/bin/bash」を「bash script.sh」として実行した場合、1行目のシバンはどう扱われるか。

  1. Aインタプリタの指定として機能する
  2. B現在のシェルを置き換える
  3. C構文エラーとなる
  4. Dコメントとして無視される
正解と解説を見る

正解:Dコメントとして無視される

シェルの引数として実行された場合、実行しているのはそのシェル自身であるため、スクリプト内の「#」で始まる行は単なるコメントとして無視される。

この問題の解説ページを開く →

342「./script.sh arg1 arg2 arg3」と実行したとき、スクリプト内で「echo $2」を実行すると何が表示されるか。

  1. Aarg2
  2. Barg1
  3. C./script.sh
  4. Darg3
正解と解説を見る

正解:Aarg2

「$2」は2番目の引数を表すため、この場合は「arg2」が表示される。

この問題の解説ページを開く →

343「./test.sh a b c」として実行した際、スクリプト内の「echo $0」が返す値はどれか。

  1. Aa
  2. Btest.sh
  3. Cbash
  4. D./test.sh
正解と解説を見る

正解:D./test.sh

「$0」にはコマンドとして入力された実行ファイル名(パスを含む)がそのまま格納されるため、「./test.sh」が表示される。

この問題の解説ページを開く →

344bashの条件分岐において、「コマンド1の終了値が0であればコマンド2を実行する」という構文はどれか。

  1. Awhile コマンド1; do コマンド2; done
  2. Bfor コマンド1; then コマンド2; fi
  3. Cif コマンド1; then コマンド2; fi
  4. Dcase コマンド1 in *) コマンド2;; esac
正解と解説を見る

正解:Cif コマンド1; then コマンド2; fi

if文は「if コマンド; then 処理; fi」の構文をとり、直後のコマンドの終了値が0であればthen以降を実行する。

この問題の解説ページを開く →

345条件判定のためにif文でよく使われる「[ ]」は、実際にはどのコマンドを呼び出しているか。

  1. Aletコマンド
  2. Bevalコマンド
  3. Cexprコマンド
  4. Dtestコマンド
正解と解説を見る

正解:Dtestコマンド

「[」は単なる括弧ではなくtestコマンドと同等の条件判定コマンドである。bashでは組み込みコマンドとして提供されるほか、/usr/bin/[ や/usr/bin/testとして実体ファイルも存在する。

この問題の解説ページを開く →

346条件式において、ファイルが存在し、かつ「ディレクトリ」である場合に真を返す演算子はどれか。

  1. A-d
  2. B-f
  3. C-e
  4. D-x
正解と解説を見る

正解:A-d

「-d ファイル名」は、対象がディレクトリファイルである場合に真(0)を返す。

この問題の解説ページを開く →

347条件式において、ファイルが存在し、かつ「通常ファイル」である場合に真を返す演算子はどれか。

  1. A-f
  2. B-e
  3. C-z
  4. D-r
正解と解説を見る

正解:A-f

「-f ファイル名」は対象が通常ファイルである場合に真を返す演算子である。

この問題の解説ページを開く →

348条件式において、ファイルが存在し、かつ「実行可能」である場合に真を返す演算子はどれか。

  1. A-r
  2. B-x
  3. C-e
  4. D-d
正解と解説を見る

正解:B-x

「-x ファイル名」はファイルが存在し、かつ実行可能権限がある場合に真となる。

この問題の解説ページを開く →

349条件式において、単純に「ファイル(またはディレクトリ)が存在する」ことだけを確認する演算子はどれか。

  1. A-e
  2. B-f
  3. C-d
  4. D-z
正解と解説を見る

正解:A-e

「-e ファイル名」は、ファイルの種類を問わず、存在していれば真を返す。

この問題の解説ページを開く →

350条件式「[ -z "文字列" ]」は、どのような場合に真を返すか。

  1. A文字列が数値として評価できる場合
  2. B文字列の長さが0である場合
  3. C文字列の長さが0より大きい場合
  4. D文字列にスペースが含まれている場合
正解と解説を見る

正解:B文字列の長さが0である場合

「-z」演算子は文字列の長さを評価し、0であれば(空文字であれば)真を返す。

この問題の解説ページを開く →

351条件式「[ -n "文字列" ]」は、どのような場合に真を返すか。

  1. A文字列が数字のみで構成されている場合
  2. B文字列が予約語と一致した場合
  3. C文字列の長さが0である場合
  4. D文字列の長さが0より大きい場合
正解と解説を見る

正解:D文字列の長さが0より大きい場合

「-n」演算子は文字列の長さが0より大きければ(空でなければ)真を返す。

この問題の解説ページを開く →

3522つの文字列が「等しくない」ことを判定する条件式はどれか。

  1. A[ 文字列1 != 文字列2 ]
  2. B[ 文字列1 -ne 文字列2 ]
  3. C[ 文字列1 <> 文字列2 ]
  4. D[ 文字列1 -not 文字列2 ]
正解と解説を見る

正解:A[ 文字列1 != 文字列2 ]

文字列の非等価判定には「!=」を用いる。(「-ne」は整数の比較に使う)

この問題の解説ページを開く →

353文字列としてではなく整数値として比較し、2つの値が等しい場合に真となる条件式はどれか。

  1. A[ 整数1 -eq 整数2 ]
  2. B[ 整数1 = 整数2 ]
  3. C[ 整数1 == 整数2 ]
  4. D[ 整数1 -same 整数2 ]
正解と解説を見る

正解:A[ 整数1 -eq 整数2 ]

-eqは整数値として比較するため「[ 05 -eq 5 ]」は真になるが、=や==は文字列比較のため「[ 05 = 5 ]」は偽になる。

この問題の解説ページを開く →

354整数1が整数2「より小さい(未満)」ことを判定する演算子はどれか。

  1. A-gt
  2. B-le
  3. C-lt
  4. D-ge
正解と解説を見る

正解:C-lt

「less than」の略である「-lt」が「より小さい」を意味する。

この問題の解説ページを開く →

355整数1が整数2「以上(より大きいか等しい)」ことを判定する演算子はどれか。

  1. A-lt
  2. B-le
  3. C-ge
  4. D-gt
正解と解説を見る

正解:C-ge

「greater than or equal」の略である「-ge」が「以上」を意味する。

この問題の解説ページを開く →

356if文の条件式の中で、ブロックデバイスファイル「/dev/sda1」に対して「[ -f /dev/sda1 ]」を実行した結果はどうなるか。

  1. A真となる
  2. B偽となる
  3. C構文エラーになる
  4. Dシステムが停止する
正解と解説を見る

正解:B偽となる

ブロックデバイスは「通常ファイル」ではないため、「-f」の判定結果は偽となる。

この問題の解説ページを開く →

357指定したリストの要素数だけ繰り返し処理を行うための構文はどれか。

  1. Awhile
  2. Bfor
  3. Ccase
  4. Dif
正解と解説を見る

正解:Bfor

「for 変数 in リスト」の構文は、リストの要素を順番に変数値に代入しながら要素数分ループする。

この問題の解説ページを開く →

358「for i in 1 2 3; do echo $i; done」を実行したときの出力結果はどれか。

  1. A1 2 3 (スペース区切りで1行)
  2. B1と2と3が改行されて順番に表示される
  3. C3のみ表示される
  4. Dエラーになる
正解と解説を見る

正解:B1と2と3が改行されて順番に表示される

リストの要素が順番に変数iに代入され、ループごとにechoが実行されるため、改行されて1, 2, 3と表示される。

この問題の解説ページを開く →

359コマンドが正常終了(終了値0)を返す間、繰り返し処理を実行し続ける構文はどれか。

  1. Acase
  2. Bwhile
  3. Cfor
  4. Duntil
正解と解説を見る

正解:Bwhile

while文は指定したコマンドの終了値が0である間、do〜doneの処理を繰り返す。

この問題の解説ページを開く →

360bashスクリプト内で変数の算術演算を行いたい場合、式を評価するコマンドはどれか。

  1. Acalc
  2. Blet
  3. Cmath
  4. Deval
正解と解説を見る

正解:Blet

letコマンドに引数として計算式を与えると、算術演算として評価される(例:let "n=n+1")。

この問題の解説ページを開く →

361複数のパターンマッチングで条件分岐を行うcase文において、最後にブロックを閉じるキーワードはどれか。

  1. Aendcase
  2. Bdone
  3. Cesac
  4. Dfi
正解と解説を見る

正解:Cesac

case文の終わりには、caseのスペルを逆順にした「esac」を記述する。

この問題の解説ページを開く →

362case文の中で、各パターンの処理の終わりを示す記号はどれか。

  1. A;
  2. B;;
  3. Cbreak
  4. Desac
正解と解説を見る

正解:B;;

case文の各パターンに対する処理の最後には、必ず「;;」を記述する。

この問題の解説ページを開く →

363case文で「どのパターンにも一致しなかった場合」の処理を記述するためによく使われるパターン文字はどれか。

  1. Aelse
  2. B?
  3. Cdefault
  4. D*
正解と解説を見る

正解:D*

case文ではワイルドカードが使用可能であり、「*」は「すべての文字」にマッチするため、その他の場合の処理に使われる。

この問題の解説ページを開く →

364前のコマンドが成功した(終了ステータスが0の)場合のみ、次のコマンドを実行する制御演算子はどれか。

  1. A&&
  2. B||
  3. C;
  4. D&
正解と解説を見る

正解:A&&

「コマンド1 && コマンド2」と記述すると、コマンド1が成功した場合にのみコマンド2が実行される。

この問題の解説ページを開く →

365前のコマンドが失敗した(終了ステータスが0以外の)場合のみ、次のコマンドを実行する制御演算子はどれか。

  1. A||
  2. B&&
  3. C;
  4. D|
正解と解説を見る

正解:A||

「コマンド1 || コマンド2」は、コマンド1が失敗した場合のフォールバック処理などに用いられる。

この問題の解説ページを開く →

366「コマンド1 ; コマンド2」と記述した場合の動作として正しいものはどれか。

  1. Aコマンド1が成功したときのみコマンド2を実行する
  2. Bコマンド1が失敗したときのみコマンド2を実行する
  3. Cコマンド1の成否にかかわらず、順にコマンド2を実行する
  4. Dコマンド1とコマンド2を同時に並行実行する
正解と解説を見る

正解:Cコマンド1の成否にかかわらず、順にコマンド2を実行する

「;」で区切られたコマンドは、直前のコマンドの終了ステータスに関係なく、左から右へ順に実行される。

この問題の解説ページを開く →

367コマンドラインやスクリプト内で「*」(アスタリスク)を単独で使用した場合、シェルはそれをどう解釈するか。

  1. A直前のコマンドの実行結果に置き換わる
  2. Bカレントディレクトリ下にあるファイル名やディレクトリ名に展開される
  3. C数学の掛け算の記号としてのみ解釈される
  4. Dコメントの開始記号として扱われる
正解と解説を見る

正解:Bカレントディレクトリ下にあるファイル名やディレクトリ名に展開される

「*」はパス名展開(ワイルドカード)として働き、カレントディレクトリのファイル名に置き換わる。

この問題の解説ページを開く →

368「for i in *; do echo $i; done」を実行した場合の動作として最も適切なものはどれか。

  1. A画面に「*」が繰り返し表示される
  2. Bカレントディレクトリ内のファイル名とディレクトリ名が順番に表示される
  3. C変数iに「*」という文字列が代入されて1回だけ表示される
  4. Dエラーが発生してループが実行されない
正解と解説を見る

正解:Bカレントディレクトリ内のファイル名とディレクトリ名が順番に表示される

inの後の「*」はファイル名に展開されるため、ディレクトリ内のすべてのファイル・ディレクトリ名がループ処理される。

この問題の解説ページを開く →

369スクリプト内で任意の終了ステータスを返して終了させるために使うコマンドはどれか。

  1. Areturn
  2. Bexit
  3. Cend
  4. Dquit
正解と解説を見る

正解:Bexit

シェルスクリプトを終了する際はexitコマンドを用い、「exit 1」のように引数で終了ステータスを指定できる。

この問題の解説ページを開く →

370bashのプロンプトで「echo -n "Hello"」を実行した場合の「-n」オプションの役割は何か。

  1. A文字列を数値として解釈する
  2. B出力後に改行を行わない
  3. C大文字と小文字を反転させる
  4. D画面に出力せず標準エラーに出力する
正解と解説を見る

正解:B出力後に改行を行わない

echoの-nオプションは、通常出力の最後に付与される改行を抑制する。

この問題の解説ページを開く →

371「#!/bin/bash」と「exit $#」の2行だけを記述したスクリプトを「./script.sh a b c d」として実行した。直後に「echo $?」を実行すると何が表示されるか。

  1. A0
  2. B4
  3. Ca
  4. Dエラーになる
正解と解説を見る

正解:B4

スクリプトは引数の個数「$#」を終了ステータスとしてexitする。引数は4つあるため、終了ステータス「$?」は4になる。

この問題の解説ページを開く →

372「[ "Linux" != "Unix" ]」を実行した直後に「echo $?」を実行した場合、表示される値はどれか。

  1. A0
  2. B1
  3. C-1
  4. Dtrue
正解と解説を見る

正解:A0

"Linux"と"Unix"は異なる文字列であるため、「!=」による判定結果は真(正常終了)となり終了ステータスは0となる。

この問題の解説ページを開く →

373「[ "Linux" = "Unix" ]」を実行した直後に「echo $?」を実行した場合、表示される値はどれか。

  1. A0
  2. Bfalse
  3. C-1
  4. D1
正解と解説を見る

正解:D1

"Linux"と"Unix"は異なるため、「=」による判定結果は偽となり終了ステータスは1(0以外)となる。

この問題の解説ページを開く →

374特殊なシェル変数のうち、「$1」や「$2」は何を表しているか。

  1. A実行したコマンドの終了値
  2. B現在のシェルのプロセスID
  3. C最後に実行されたバックグラウンドジョブのPID
  4. D1番目、2番目の引数
正解と解説を見る

正解:D1番目、2番目の引数

$1は1番目の引数、$2は2番目の引数といったように、位置パラメータが格納されている。

この問題の解説ページを開く →

375「alias l='ls -l'」とエイリアスを定義した場合、この設定内容が保存される場所として正しいものはどれか。

  1. Aコマンド実行した現在のシェル内のみ(設定ファイルに書かない限り)
  2. B自動的に ~/.bashrc に書き込まれる
  3. C自動的に /etc/profile に書き込まれる
  4. Dカーネルのメモリ領域に永続化される
正解と解説を見る

正解:Aコマンド実行した現在のシェル内のみ(設定ファイルに書かない限り)

コマンドラインでaliasコマンドを実行しただけでは一時的な設定であり、恒久的に使うには~/.bashrc等の設定ファイルへの追記が必要である。

この問題の解説ページを開く →
LinuCレベル1の全分野一覧へ戻る