A,Bという名の複数のディレクトリが,図に示す構造で管理されている。"¥B¥A¥B"がカレントディレクトリになるのは,カレントディレクトリをどのように移動した場合か。
ここで,ディレクトリの指定は次の方法によるものとし,→は移動の順序を示す。
〔ディレクトリ指定方法〕
(1) ディレクトリは,"ディレクトリ名¥…¥ディレクトリ名"のように,経路上のディレクトリを順に"¥"で区切って並べた後に,"¥"とディレクトリ名を指定する。
(2) カレントディレクトリは,"."で表す。
(3) 1階層上のディレクトリは,".."で表す。
(4) 始まりが"¥"のときは,左端にルートディレクトリが省略されているものとする。
(5) 始まりが"¥",".",".."のいずれでもないときは,左端に".¥"が省略されているものとする。
正答1
解説
正解は1です。
絶対パスと相対パスを使ったカレントディレクトリの移動をたどる問題です。
図では、ルートの下にAとBがあり、それぞれの下にさらにAとB、その下にもAとBがある3階層の構造になっています。
「¥」で始まる指定はルートからの絶対パス、「.」はカレント、「..」は1階層上を表します。
【選択肢別解説】
1:○ 「¥A」でカレントは¥Aになります。
次の「..¥B」では1階層上のルートからBへ移るので、カレントは¥Bです。
最後の「.¥A¥B」はカレントの¥Bからの相対指定なので、カレントは¥B¥A¥Bになります。
2:× 「¥B」でカレントは¥Bです。
「.¥B¥A」で¥B¥B¥Aへ移ります。
「..¥B」で1階層上の¥B¥BからBへ移り、カレントは¥B¥B¥Bになります。
3:× 3回とも「¥」で始まる絶対パスなので、最後の「¥B」だけが結果を決めます。
カレントはルート直下の¥Bです。
4:× 「¥B¥A」へ移ったあと、「..¥B」で1階層上の¥BからBへ移ります。
カレントは¥B¥Bになります。
【ポイント】
相対パスは「今どこにいるか」を1手ごとに書き出しながらたどるのが確実です。
「¥」で始まる指定は、それまでの位置に関係なくルートからの位置になります。