- ベストアンサー
コマンドプロンプトの表示について(Dir)
Dirコマンドについて質問があります。 コマンドプロンプトで「Dir」と入力するとカレントディレクトリの一覧が表示されますが、この際にカレントディレクトリ内にあるフォルダやファイル名以外に <DIR> . <DIR> .. と2行表示されるのですが、これはどのような意味ですか? ピリオド1つの方は「カレントディレクトリ」を表し、ピリオド2つの方は「カレントディレクトリの1つ上のディレクトリ」を表すらしいのですが、「Dir」と入力してカレントディレクトリの一覧を表すのはフォルダ名とファイル名だけだと思うのですが。。。 ちなみに Dir D:\ABC などのように他のディレクトリのリストを表示させると、フォルダ名とファイル名の他は <DIR> . のようにピリオド1つの行のみが表示されます(ピリオド2つの行は表示されない)。 <DIR> . <DIR> .. のように2行表示されたり、1行のみだったり、違いを教えてほしいです。また、なぜこの2行が表示されるのか、分かりません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>コマンドプロンプトの画面です。例として なるほど。 Windows11で、ルートにあるフォルダに限り .. が表示されないような感じです。 Windows10では .. が表示されます。 この原因をいろいろ探ってみましたが、私個人の結論としては、『Windows11ではルートディレクトリにシステム属性が設定されているため、ルート直下のフォルダでdirコマンドを実行した場合、ルートを指し示す .. は非表示になる(非表示になるだけで、.. のフォルダは存在する)』です。 添付画像にある通り、システム属性でフィルタすると、ルートにあたる .. がWindows11でのみヒットします。 ルート以外であれば、attribコマンドでシステム属性や隠し属性を付与・削除することで、同様に . や .. が非表示になることを再現できるでしょう。 ルートに限っては、属性を保持するものがないので変更できないはずなのですが、Windows11で何かしらの変更が加えられたのかもしれません。 他の回答に一部解釈違いがあるので補足しますが . そのフォルダ自身を指し示すフォルダ .. そのフォルダがある親フォルダを指し示すフォルダ です。 ルート以外の全てのサブフォルダに存在するが、dir /s などでこれが厳密に処理されると無限ループになるので通常は無視され、コマンドで . または .. を指示した場合のみ機能する、ということかと。
その他の回答 (3)
- kteds
- ベストアンサー率42% (1882/4440)
> ピリオド1つの方は「カレントディレクトリ」を表し、・・・ これは違います。 「カレントディレクトリの1つ上のディレクトリ」の上にさらに「1つ上のディレクトリ」があります、ということを表しています。 添付画像の場合は カレントディレクトリはC:\testです。 C:\test>dir back とはカレントディレクトリの「1つ下にある」backディレクトリを指定しています。 したがって C:\test\backディレクトリの内容が表示されています。 <DIR> .. とは C:\test\backディレクトリの1つ上には「ディレクトリがあります」(つまり、C:\testがあります)ということを意味しています。 <DIR> . とは C:\test\backディレクトリの1つ上の「さらに1つ上」には「ディレクトリがあります」(つまり、C:\があります)ということを意味しています。
お礼
どうもありがとうございます。勉強になります。
- SI299792
- ベストアンサー率47% (772/1616)
- luka3
- ベストアンサー率72% (424/583)
OSとしてはunixが先なので、そちらで調べてみたら https://ja.stackoverflow.com/questions/41558/ls-a-%E3%81%AF%E3%81%AA%E3%81%9C-%E3%82%84-%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%82%93%E3%81%A7%E3%81%97%E3%82%87%E3%81%86 . も .. も実際に存在するハードリンク、ということです。 この仕組みがあるおかげで、..\ABC と相対形式で記述できることになり、この仕組みがないと(下層以外の)すべてのファイルはルートからのフルパスで記述しないとならない、ということでしょう。 .. については親フォルダの場所(FATでいうとディレクトリエントリのあるクラスタ番号)を示すためのものだろうとなんとなく予想してましたが、.についても同じようになっていたとは知りませんでした。 >ピリオド1つの行のみが表示され この表示は見たことないので、差し支えなければどこで確認できるか教えていただければと思います。
補足
luka3さん 回答ありがとうございます。 >この表示は見たことないので、差し支えなければどこで確認できるか教えていただければと思います。 コマンドプロンプトの画面です。例として https://www.javadrive.jp/command/file/index1.html に表示されている、コマンドプロンプトの画面では、 ピリオドが1つだったり、2つだったり、無かったりしています。。。
お礼
色々と調べて頂いたようで、どうもありがとうございます。Windows10と11で少々違いがあるみたいですね。 恥ずかしながらコマンドプロンプトを今さら少し勉強していていまして分からないところが多いです。。。