怎么会有一个名为`~`的目录呢?

怎么会有一个名为`~`的目录呢?

我试图测试这个有缺陷的/新工具,看看它是如何工作的,它提示我选择一个目录来用于我正在做的事情。我从目录中~/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

这是一个名为“~”的目录。如果“~”是参数的第一个字符,您的 shell 将尝试扩展它,因此您必须采取特殊措施。

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

相关内容