web-dev-qa-db-ja.com

どうすれば `〜`という名前のディレクトリができますか?

私はこのバグのある/新しいツールをテストして、それがどのように機能するかを確認しようとしていましたが、それは私がしていることのために使用するディレクトリを選択するように促しました。ディレクトリ~/Code/indepから、~/Code/indep/tarbellと入力しました。 (ばかげて、「ターベル」と入力することもできましたが、何でもかまいません。)存在しなかったので、作成するように促されました。このディレクトリの内容を調べたところ、次のように表示されます。

brian@navis:~/Code/indep$ ls
~ project1 project2 project3 ...

「ああ、変だ、〜へのシンボリックリンクができた」と思った。しかしながら:

brian@navis:~/Code/indep$ file ./~
./~: directory

fileはそれがディレクトリだと考えています。

brian@navis:~/Code/indep$ ls -l
drwxr-xr-x 3 brian brian 4096 Nov  8 16:50 ~
drwxr-xr-x 8 brian brian 4096 Oct 14 18:42 project1
drwxr-xr-x 3 brian brian 4096 Sep 10 21:15 project2
drwxr-xr-x 5 brian brian 4096 Oct 14 19:33 project3
...

ls -lもそうです。

「ああ、ハードリンクなのか?実際に使ったことがない」と思った。しかし、再現しようとしたので、ディレクトリへのハードリンクを作成することはできません。だから...私はこれを私が理解できないものに絞り込んだと思います。どういうわけか、この別のディレクトリにホームディレクトリをマウントしましたか?

この時点での私の主な目標は、このフォルダ内のホームディレクトリへの参照を削除することです(rmは答えのようには見えません)が、何が起こっているのか知りたいです。

編集:

振り返ってみると、私は何が起こったのかを正確に理解しています。以下で回答したように、プログラムは現在のディレクトリ内に「~」というディレクトリを作成しました。これについての唯一の本当に難読化された事実は、私が実際にディレクトリが何であるかを表示していた方法と一致していなかったということです。 「~」と呼ぶこともあれば、「./~」と呼ぶこともあります。後者を実行した場合にのみ、実際に何が起こっているかを確認できますが、これを理解するまで、「~」の絶対パスを使用してから実際にローカルであるものに、私が見ているものを混同していました。ディレクトリ。

5
Brian Peterson

名前が「〜」のディレクトリです。シェルが引数の最初の文字である場合、「〜」を展開しようとするため、特別な対策を講じる必要があります。

$ mkdir ./~
$ file ./~
./~: directory
$ rm -ri ./~
rm: remove directory ‘./~’? y