なぜ `~`というディレクトリがありますか?

なぜ `~`というディレクトリがありますか?

このバグがあるか、新しいツールがどのように機能するかをテストしようとしていますが、現在のタスクに使用するディレクトリを選択するように求められます。私はディレクトリから。と~/Code/indep入力しました。~/Code/indep/tarbell(愚かなことですが、「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答えではないようです)。しかし、何が起こっているのか知りたいです。

編集する:

振り返ると、何が起こったのかを完全に理解しています。以下の回答のように、プログラムは~現在のディレクトリに ""というディレクトリを作成しました。本当に混乱する唯一のことは、私が実際にディレクトリを見る方法と一致しないという事実です。時には""と呼ばれることもあり~、時には""と呼ばれることもあります./~。実際に何が起こっているのかを見ることができるのは、後者を実行するときにのみ可能ですが、~""を使用する絶対パスで見ているものと実際にローカルディレクトリであることを混同していることを理解するまでは言葉です。

ベストアンサー1

これは「~」というディレクトリです。 "~"が引数の最初の文字である場合、シェルはそれを拡張しようとするので、特別なアクションを取る必要があります。

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

おすすめ記事