ITパスポート 2009年 春期 問57
問題文
あるファイルシステムの一部が図のようなディレクトリ構造であるとき、*印のディレクトリ(カレントディレクトリ)D3から矢印が示すディレクトリD4の配下のファイルaを指定するものはどれか。ここで、ファイルの指定は、次の方法によるものとする。
〔指定方法〕
(1)ファイルは、“ディレクトリ名¥...¥ディレクトリ名¥ファイル名”のように、経路上のディレクトリを順に“¥”で区切って並べた後に“¥”とファイル名を指定する。
(2)カレントディレクトリは“.”で表す。
(3) 1階層上のディレクトリは“..”で表す。
(4)始まりが“¥”のときは、左端にルートディレクトリが省略されているものとする。
(5)始まりが“¥”、“.”、“..”のいずれでもないときは、左端にカレントディレクトリ配下であることを示す“¥”が省略されているものとする。

選択肢
ア:..¥..¥D2¥D4¥a
イ:..¥D2¥D4¥a(正解)
ウ:D1¥D2¥D4¥a
エ:D2¥D4¥a
🔒 解説は解答すると表示されます
ディレクトリのパス指定(D3からD4のファイルa)【ITパスポート 解説】
正解の理由
カレントディレクトリ(現在位置)が D3 のとき、D4 にあるファイル a を指定するにはまず親の階層(D1)に移動し、そこから D2 → D4 と下っていく必要があります。親のディレクトリを表す記号は「..」です(「..」は「1階層上」を意味します)。したがって親に上がってから D2、D4、ファイル名 a を順に指定するパスは "..¥D2¥D4¥a" になります。つまり選択肢の中では イ が正しいです。
(補足)ルールの要点:
- "." はカレントディレクトリ(今いる場所)。
- ".." は1つ上のディレクトリ(親ディレクトリ)。
- 先頭が "¥" のときはルート(最上位)からの指定、何も付かないときはカレントディレクトリ配下を指定する省略形です。
解法ステップ
- 現在位置を確認:カレントディレクトリは D3。
- 目的地を確認:ターゲットは D4 の配下のファイル a(図では D4 は D2 の子で、D2 は D1 の子)。
- カレント(D3)から D4 へ行くには、まず親(D1)へ上がる必要がある。親へ上がるには ".." を使う。
- 親からは D2 → D4 と下っていくので、順に "D2¥D4¥a" を続ける。
- つなげると "..¥D2¥D4¥a"。これが正しい指定方法。
選択肢別の誤答解説
-
ア: ..¥..¥D2¥D4¥a
- これは「2階層上に上がる(..¥..)→ D2 → D4 → a」を意味します。D3 の 2階層上は D1 のさらに上(図では不要/存在しない可能性がある)なので、余分に上がりすぎています。従って誤りです。
-
イ: ..¥D2¥D4¥a
- カレント D3 から1階層上(D1)に上がり、D2→D4→a と進む正しい指定です(正解)。イ が図に合致します。
-
ウ: D1¥D2¥D4¥a
- 先頭が "¥"、 "."、".." のいずれでもないため、ルール (5) により「カレント配下の D1」を指定する意味になります。つまり「D3 の下にある D1」を探すことになり、図の構造では D3 の下に D1 はないため誤りです。なおルートからの絶対指定をしたい場合は先頭に "¥" を付けて "¥D1¥D2¥D4¥a" とします。
-
エ: D2¥D4¥a
- 先頭が何もないので「カレント配下の D2」を指定する形です。D3 の直下に D2 があれば通りますが、図では D2 は D1 の子なので D3 の下にありません。よって誤りです。
よくある誤解
-
「先頭に ¥ がないと絶対パスだ」と誤解する
- 実際は先頭に "¥" があるとルート(絶対)からの指定です。先頭がない場合はカレント配下(相対)になります。混同しやすいので注意してください。
-
".." の数を感覚で決めてしまう
- 1つの ".." は「1階層上」。目的地までに何回親に上がる必要があるかを図で確実に数えてから使いましょう。余分に上がると無関係な場所を指します。
-
「D1¥...」はルートからの指定だと思い込む
- 先頭に "¥" が無ければそれは「カレントの下の D1」を意味します。ルートから始めたいときは必ず先頭に "¥" を付けます。
補足コラム
- 相対パスと絶対パスの違い
- 相対パス:カレントディレクトリを基準にした指定。今回の イ のように "..¥D2¥D4¥a"。
- 絶対パス:ルート(最上位)を基準にした指定。例:"¥D1¥D2¥D4¥a"(ルートが D1 の直下にある構成の場合)。
- パス区切り記号について
- 問題では "¥" を使っています。OSによって "/"(スラッシュ)を使うこともあります(例:Unix系)。意味は同じで「階層の区切り」です。
FAQ
Q1: 先頭に "." を書く必要はありますか?
A1: 書かなくても良いです。ルール (5) により先頭に何もないと「カレント配下」と解釈されます。例えば "D2¥D4¥a" は ".¥D2¥D4¥a" と同じ意味です。
A1: 書かなくても良いです。ルール (5) により先頭に何もないと「カレント配下」と解釈されます。例えば "D2¥D4¥a" は ".¥D2¥D4¥a" と同じ意味です。
Q2: ルートがどこかわからないときはどう指定する?
A2: ルートを基準にした絶対パスはルートの位置を知っている必要があります。図をよく見てルート(最上位)からの経路を確かめるか、相対パス(今回のように ".." を使う)を使うのが確実です。
A2: ルートを基準にした絶対パスはルートの位置を知っている必要があります。図をよく見てルート(最上位)からの経路を確かめるか、相対パス(今回のように ".." を使う)を使うのが確実です。
Q3: ".." をたくさん使えば必ずたどり着けますか?
A3: 多すぎると目的地より上の階層に行ってしまい、正しい場所に到達しません。図を見て必要な回数だけ上がるのが重要です。
A3: 多すぎると目的地より上の階層に行ってしまい、正しい場所に到達しません。図を見て必要な回数だけ上がるのが重要です。
関連キーワード: ファイルパス、相対パス、絶対パス、カレントディレクトリ、親ディレクトリ、ルートディレクトリ、パス区切り記号

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

