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