ITパスポート 2012年 秋期 問63
問題文
図に示す階層構造で、複数個の同名のディレクトリA、Bが配置されており、ユーザIDごとにログインしたときのカレントディレクトリが異なる。U0002がログインした直後に、矢印が示すディレクトリBに存在するファイルfを指定するものはどれか。ここで、ファイルの指定方法とユーザID別のカレントディレクトリは次のとおりである。
〔ファイルの指定方法〕
(1) “ディレクトリ名¥…¥ディレクトリ名¥ファイル名”のように、経路上のディレクトリを順に“¥”で区切って並べた後に“¥”とファイル名を指定する。
(2)カレントディレクトリは“.”で表す。
(3) 1階層上のディレクトリは“..”で表す。
(4)始まりが“¥”のときは、左端のルートディレクトリが省略されているものとする。

選択肢
ア:.¥B¥f
イ:..¥B¥f
ウ:..¥..¥B¥f
エ:..¥..¥..¥B¥f(正解)
🔒 解説は解答すると表示されます
同名ディレクトリが複数ある階層での相対パス指定【ITパスポート 解説】
正解の理由
U0002のログイン時のカレントディレクトリは「¥A¥B¥A」(ルート直下のA→その下のB→その下のA)です。矢印が指すのはルート直下の「B」(パスで表すと「¥B」)です。
現在の場所(¥A¥B¥A)から「¥B」に移動するには、親ディレクトリを3回(A→B→A の上へ上へ上へ)たどってルートに戻り、そこからBに降りる必要があります。親ディレクトリを表す「..」を3つ連ね、最後に目的のディレクトリ名とファイル名を付けると「..¥..¥..¥B¥f」になり、選択肢のエと一致します。
現在の場所(¥A¥B¥A)から「¥B」に移動するには、親ディレクトリを3回(A→B→A の上へ上へ上へ)たどってルートに戻り、そこからBに降りる必要があります。親ディレクトリを表す「..」を3つ連ね、最後に目的のディレクトリ名とファイル名を付けると「..¥..¥..¥B¥f」になり、選択肢のエと一致します。
解法ステップ
- 用語確認
- カレントディレクトリ(現在作業しているフォルダ) = U0002 の場合「¥A¥B¥A」。
- 「.」は現在のディレクトリ、「..」は1階層上のディレクトリ(親)。
- 区切り文字は「¥」(図ではこれを使用)。
- 目的地を確認
- 矢印が指すディレクトリ = ルート直下の「B」 = 「¥B」。
- 相対移動量を数える
- 現在「¥A¥B¥A」 → ルート「¥」まで上るには親に3回移動(.. を3回)。
- その後ルート直下の B に降りるので「B」を指定。
- ファイル名を付ける
- 目的のディレクトリ内のファイル f を指すので最後に ¥f を付ける。
- 結果:..¥..¥..¥B¥f → 選択肢 エ。
選択肢別の誤答解説
- ア: .¥B¥f
- 「.」は現在のディレクトリ(¥A¥B¥A)を意味します。つまり「現在のディレクトリ配下のB/ f」を指します。現在のディレクトリの直下に目的のルート直下のBはないため誤りです(別の場所のBを指す可能性はあるが、矢印が指す /B ではない)。
- イ: ..¥B¥f
- 「..」で親(¥A¥B)に移動してから「B」に入ると「¥A¥B¥B」になります。これも矢印の示すルート直下の「¥B」ではありません。
- ウ: ..¥..¥B¥f
- 「..¥..」で2階層上(¥A)に上がり、そこから「B」に入ると「¥A¥B」になり、やはりルート直下の「¥B」ではありません。
- エ: ..¥..¥..¥B¥f ← 正解
- 3回上がってルートに戻り、そこからBに入るため目的の「¥B¥f」を指します。
よくある誤解
- 「.. の数え方を間違える」
- 現在のディレクトリから目的地までの階層差を正確に数える必要があります。親に上がる回数は「現在の深さ」−「目的地の深さ(共通祖先含む)」で考えると整理しやすいです。
- 「同名ディレクトリを区別できない」
- ディレクトリ名が同じでも場所(ルートからの経路)が違うと別物です。必ず経路(ルート→...)で場所を特定します。
- 「先頭の¥の意味を混同する」
- 問題のルールでは先頭に¥がある表記はルートからの絶対パス(ただしルート名自体は省略)を表します。先頭がない場合は相対パスです。
補足コラム
- 相対パスと絶対パスの違い(簡単まとめ)
- 絶対パス:ルート(最上位フォルダ)からの位置を示す。問題文では先頭に「¥」がある表記。例:¥A¥B¥A
- 相対パス:現在のカレントディレクトリからの位置。先頭が「.」や「..」、またはディレクトリ名。例:..¥..¥B¥f
- 実務での覚え方のコツ
- 「目的地まで上る回数 = 現在の階層数 − 目的地の共通祖先階層数」。共通祖先がルートなら、現在の深さ(ルートからのステップ数)そのまま上る回数になります。
FAQ
Q1. 「.¥B¥f」はどういうときに使う?
A1. 現在のディレクトリに子ディレクトリ B があり、その中の f を指定したいときに使います。現在のディレクトリ直下に B が存在するか図で確認してください。
A1. 現在のディレクトリに子ディレクトリ B があり、その中の f を指定したいときに使います。現在のディレクトリ直下に B が存在するか図で確認してください。
Q2. 「¥」で始まる書き方は必ずルートになるの?
A2. この問題のルールでは、先頭に「¥」がある表記はルートからの経路(絶対パス)を表します。実際のOSでの表記と細部は異なることがありますが、試験問題では図やルールに従って解きます。
A2. この問題のルールでは、先頭に「¥」がある表記はルートからの経路(絶対パス)を表します。実際のOSでの表記と細部は異なることがありますが、試験問題では図やルールに従って解きます。
Q3. 同名ディレクトリが複数あるときの視点は?
A3. ディレクトリ名だけで場所を特定できません。必ず「どの親(どの経路)の下の同名か」を経路で判断します。
A3. ディレクトリ名だけで場所を特定できません。必ず「どの親(どの経路)の下の同名か」を経路で判断します。
関連キーワード: 相対パス, 絶対パス, カレントディレクトリ, ルートディレクトリ, パス区切り, ディレクトリ構造, ..(親ディレクトリ)

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

