マナビングITパスポート

相対パスで隣のディレクトリへ進むには

ITパスポート試験 平成31年度春期 問96 / ソフトウェア › ファイルシステム

過去問にチャレンジ

平成31年度春期 問96

Webサーバ上において,図のようにディレクトリd1及びd2が配置されているとき,ディレクトリd1(カレントディレクトリ)にあるWebページファイルf1.htmlの中から,別のディレクトリd2にあるWebページファイルf2.htmlの参照を指定する記述はどれか。ここで,ファイルの指定方法は次のとおりである。 〔指定方法〕 (1) ファイルは,“ディレクトリ名/…/ディレクトリ名/ファイル名”のように,経路上のディレクトリを順に“/”で区切って並べた後に“/”とファイル名を指定する。 (2) カレントディレクトリは“.”で表す。 (3) 1階層上のディレクトリは“..”で表す。 (4) 始まりが“/”のときは,左端のルートディレクトリが省略されているものとする。

平成31年度春期 問96の図
  1. ア

    ./d2/f2.html

  2. イ

    ./f2.html

  3. ウ

    ../d2/f2.html

  4. エ

    d2/../f2.html

会話形式の解説

講師講師
注目するのは、現在いるd1からd2までの道順です。相対パスは、カレントディレクトリを起点にたどります。
受験者受験者
図ではd1とd2が同じ階層です。d2へ進むには、いったん上へ戻るのでしょうか。
講師講師
はい。「..」で一階層上のルートへ戻り、そこからd2へ進んでf2.htmlを指定します。したがって、正解は「../d2/f2.html」です。
受験者受験者
「./d2/f2.html」の「.」は、今いるd1を表すのですね。
講師講師
そのとおりです。その経路ではd1の下にd2を探します。図のd2はd1の下にないので、誤りです。
受験者受験者
では「./f2.html」は、d1の中にf2.htmlがあるときの指定ですね。
講師講師
はい。図ではf2.htmlはd2の中にあるため、これも目的のファイルを指定できません。
受験者受験者
「d2/../f2.html」は途中に「..」がありますが、最初にd2へ進もうとする点が気になります。
講師講師
その点が誤りです。d1の下にはd2がないので、最初の「d2」で図の経路と合わなくなります。
受験者受験者
同じ階層の別のディレクトリへ行くときは、先に「..」で親へ戻ると分かりました。
講師講師
経路を左から順にたどると確認しやすくなります。「.」は現在の場所、「..」は一階層上を表すと区別しましょう。

まとめ

相対パスはカレントディレクトリを起点にたどります。図ではd1とd2がルート直下の同じ階層にあるため、d1から「..」でルートへ戻ってからd2へ進みます。f2.htmlを指定する正しい記述は「../d2/f2.html」です。「.」は現在のディレクトリを表すので、「..」との違いに注意します。

解答・解説

正解はウです

この問題のテーマ

カレントディレクトリから、別のディレクトリにあるファイルを相対パスで指定する方法を問う問題です。

解き方の考え方

図ではd1とd2がどちらもルートの直下にあります。f1.htmlがあるd1を起点に、まず「..」で親のルートへ移動し、次にd2へ進みます。その経路の末尾にf2.htmlを付けます。

選択肢ごとの解説

  1. ×ア  ./d2/f2.html
    「./d2/f2.html」の「.」は、現在いるd1を表します。この記述はd1の下にd2がある場合の経路ですが、図ではd2はd1と同じ階層にあります。
  2. ×イ  ./f2.html
    「./f2.html」は、現在いるd1の中のf2.htmlを指定します。図のf2.htmlはd2の中にあるため、目的のファイルに届きません。
  3. ○ウ  ../d2/f2.html
    「../d2/f2.html」は、d1から「..」で親のルートへ移り、そこからd2内のf2.htmlを指定します。図に示された配置と一致するので、これが正解です。
  4. ×エ  d2/../f2.html
    「d2/../f2.html」は、最初にd1の下のd2へ進もうとする記述です。図にはその位置にd2がないため、目的のファイルを指定できません。

補足

経路は左から順にたどって確かめると判断しやすくなります。この問題では「..」でルートへ戻った後に、d2へ進む順序が大切です。

POINT

  • 相対パスは、カレントディレクトリを起点にたどります。
  • 「.」は現在のディレクトリ、「..」は1階層上のディレクトリを表します。
  • 同じ階層にある別のディレクトリへ行くには、いったん親へ戻ります。

※出典:平成31年度春期 ITパスポート試験 問96(一部改変)