Bri*_*son 6 shell directory filenames quoting rm
我试图测试这个有问题的/新工具来看看它是如何工作的,它提示我选择一个目录来用于我正在做的事情。从目录中~/Code/indep
,我输入了~/Code/indep/tarbell
. (愚蠢,我可以直接输入'tarbell',但无论如何。)它促使我创建它,因为它不存在,我说是的。当我检查这个目录的内容时,我看到的是:
brian@navis:~/Code/indep$ ls
~ project1 project2 project3 ...
Run Code Online (Sandbox Code Playgroud)
我想“哦,很奇怪,它创建了一个指向 ~ 的符号链接”。然而:
brian@navis:~/Code/indep$ file ./~
./~: directory
Run Code Online (Sandbox Code Playgroud)
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
...
Run Code Online (Sandbox Code Playgroud)
也是如此ls -l
。
我想,“哦,......这是一个硬链接吗?我从来没有真正使用过这些。” 但是我试图重现,并且无法创建到目录的硬链接。所以......我想我已经把范围缩小到我不明白的事情上。我是否以某种方式将我的主目录安装在另一个目录中?
我此时的主要目标是删除此文件夹中对我的主目录的引用(rm
似乎不是答案),但我也很想知道发生了什么。
编辑:
回想起来,我完全明白发生了什么。正如下面的回答,程序~
在我的当前目录中创建了一个名为“ ”的目录。唯一真正令人困惑的事实是,我与实际查看目录内容的方式不一致。有时我称它为“ ~
”,有时称为“ ./~
”。只有当你做后者时,你才能真正看到发生了什么,但在我理解这一点之前,我正在将我所看到的从使用“ ~
”的绝对路径到实际上是本地目录的内容混为一谈。
Ign*_*ams 10
这是一个名为“~”的目录。如果 "~" 是参数的第一个字符,您的 shell 将尝试扩展它,因此您必须采取特殊措施。
$ mkdir ./~
$ file ./~
./~: directory
$ rm -ri ./~
rm: remove directory ‘./~’? y
Run Code Online (Sandbox Code Playgroud)