LoginSignup
9
5

More than 5 years have passed since last update.

Windowsのコマンドプロンプトでホームディレクトリを見るときの注意点: ~ディレクトリの恐怖

Posted at

はじめに

コマンドプロンプト
C:\current_directory>dir ~
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 0000-0000 です

 C:\current_directory のディレクトリ

ファイルが見つかりません

コマンドプロンプトではdir ~コマンドを用いてホームディレクトリを見ることはできません。

Windowsをいつも使っているつもりでしたが、ls == dirだと思い込んでいてハマったので書いておきます。

正解

コマンドプロンプト
C:\current_directory>dir %homepath%
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 0000-0000 です

 C:\home_directory のディレクトリ

2020/02/02  20:20    <DIR>          .
2020/02/02  20:20    <DIR>          ..

# ほか色々

               0 個のファイル                   0 バイト
               2 個のディレクトリ  000,000,000,000 バイトの空き領域

原因

Windowsのコマンドプロンプトでdir ~を打つと、殆どは最初の結果になります。
しかしWindowsであれば、多くの環境で何らかのファイルがホームディレクトリに存在するはずです。

実はコマンドプロンプトにおいて、dir ~コマンドは、カレントディレクトリ内の~ディレクトリを見ています。

つまり、先ほどは殆どが最初の結果になるといいましたが、例外として、カレントディレクトリ内に~ディレクトリが存在する場合のみ、次の結果になります。

コマンドプロンプト
C:\current_directory>mkdir ~
C:\current_directory>dir ~
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 0000-0000 です

 C:\current_directory\~ のディレクトリ

2000/02/28  23:59    <DIR>          .
2000/02/29  00:00    <DIR>          ..
               0 個のファイル                   0 バイト
               2 個のディレクトリ  000,000,000,000 バイトの空き領域

そして恐ろしいことに、コマンドプロンプトではmkdir ~でカレントディレクトリ下に~ディレクトリを作れてしまいます!

PowerShellの場合

PowerShellではdir ~というコマンドでホームディレクトリを見てくれます。

そのため、カレントディレクトリに~ディレクトリが存在していても、~ディレクトリの中身ではなくホームディレクトリを見ます。

PowerShell
PS C:\home_directory> tree
C:.
├─~
|  ├─subdirectory1_in_~
  └─subdirectory2_in_~
├─dir1
|  ├─subdirectory1_in_dir1
  └─subdirectory2_in_dir1
└─dir2
   ├─subdirectory1_in_dir2
   └─subdirectory2_in_dir2
PS C:\home_directory> dir ~


    ディレクトリ: C:\home_directory


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       1900/01/01     00:00                ~
d-r---       2036/02/06     00:54                dir1
d-r---       2038/01/19     03:14                dir2

また、コマンドプロンプトのようにmkdir ~をすることはできません。

PowerShell
PS C:\current_directory> mkdir ~
mkdir : 指定された名前 C:\home_dir の項目は既に存在します。
発生場所 :1 文字:1
+ mkdir ~
+ ~~~~~~~
    + CategoryInfo          : ResourceExists: (C:\home_directory:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand

おわりに

Nyagosを使いましょう!(ぉぃ

もし何か気づいたこと、気になったことがあれば教えてください!

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5