助け合いフォーラム

LPIC

LPIC Lv1-101(Ver5.0)
問題ID : 35564
問題を開く
user01ユーザでログインしている。このユーザのホームディレクトリ直下にある.shファイルは「a.sh」と「1.sh」である。
この 2つのファイルを表示するコマンドはどれか。(2つ選択)

正解

ls ~/?.sh

ls /home/user01/*.sh

解説

user01ユーザでログインしている場合、user01のホームディレクトリは「/home/user01」もしくは「~(チルダ)」、「~user01」、$HOME のいずれかで指定できます。

以下は主なメタキャラクタをまとめた表です。メタキャラクタとは、シェルによって特別に解釈される文字です。


上表より、「a.sh」と「1.sh」を表示するには、「?.sh」もしくは「*.sh」と指定します。

したがって、正解は
・ls ~/?.sh
・ls /home/user01/*.sh
です。

その他の選択肢については以下のとおりです。
・ls '~/*.sh'
シングルクォート「'」で囲まれた部分はシェルに解釈されません。
「~」や「*」が単なる文字として扱われますので、誤りです。

・ls /home/user01/..sh
「.」は、1つの場合はカレントディレクトリを指し、2つつなげて「..」の場合は親ディレクトリを指します。
ただしファイルやディレクトリ名の一部として使用された場合は単なる文字として扱われます。
このコマンドは設問が求めるファイルを表示できませんので、誤りです。

・ls ~/+.sh
「+」は通常、シェル上で特に意味を持たず単なる文字として扱われます。なお、「+」は正規表現で使用されることがありますが、通常、lsコマンドは正規表現を解釈しません。
このコマンドは設問が求めるファイルを表示できませんので、誤りです。

参考

メタキャラクタは、シェルによって特別に解釈される文字です。

以下は主なメタキャラクタとディレクトリ関連の特殊記号をまとめたものです。


例えばechoコマンドの引数に「*」を指定した場合、シェルは「*」を表示せずカレントディレクトリの内容を表示します。これは、シェルが「*」をメタキャラクタとして特別に認識するためです。

$ echo *
file1 file2

シェルがメタキャラクタを通常の文字として扱う(メタキャラクタをエスケープする)ためには、以下のような方法があります。

・「\」(環境によっては「¥」が表示される)をメタキャラクタの直前に付ける

$ echo \*
*

・「'」でメタキャラクタまたはメタキャラクタを含む文字列を囲む

$ echo '*'
*

・「"」でメタキャラクタまたはメタキャラクタを含む文字列を囲む

$ echo "*"
*

なお、「"」で囲まれた「$」、「`」、「\」、「"」は文字ではなくメタキャラクタとして扱われます。

例)
$ DATE=date
$ echo "$DATE"
date

「"」で囲まれていても「$」はメタキャラクタとして扱われるため、「$DATE」とは表示されず、変数に格納されている値が表示されます。
つまり、「echo "$DATE"」と「echo $DATE」の実行結果は同じです。

例)
$ echo "`date`"
2012年 1月 12日 木曜日 15:00:40 MST

「"」で囲まれていても「`」はメタキャラクタとして扱われるため、「`date`」とは表示されず、dateコマンド(現在の日付と時刻を表示)の実行結果が表示されます。
つまり、「echo "`date`"」と「echo `date`」の実行結果は同じです。

上に戻る

ホームディレクトリについて

公開日 2023/11/28

ユーザーのホームディレクトリは設定で変えられるので、
必ずしも/home/user01がuser01ユーザーのホームディレクトリとは言えないのではないでしょうか。

2023/11/28 15:35

確かにホームディレクトリを/home/user01以外に設定することは可能ですので、
正解のディレクトリが必ずホームディレクトリになるとは言えません。
しかし逆に考えれば設定しなければ/home/user01がホームディレクトリになりますので、
特に記述がなければこのディレクトリがホームディレクトリであると考えるのが自然です。
また、この問題は2つ選択することが明示されていますので、
他の選択肢が間違っていることに気付ければこの正解の選択肢を選ぶことができます。


コメント

G Gengengenki

2023/12/02 12:24

よくわかりました。 ありがとうございました。

この返信に対して
コメントを記入できます

2023/11/28 22:22

「変更できるから正解とは言えない」とか言い始めると、多くの問題は正解が無くなってしまいますよ。
極論ですが、lsコマンドでさえ alias ls='cd' と設定すればcdの動きに変更できるので正解とは言えないってことになります。
変更されていることが明記されていないなれば、デフォルトのままとか、よくある設定、構成を基に正解を導き出せば良いです。


コメント

G Gengengenki

2023/12/02 12:25

確かにそうですね。 特に注記がないときは一般的な設定や構成をもとに考えたいと思います。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?