删除名为 ~ 的文件夹

Removing a folder called ~

我的 bash 脚本中有错误创建了名为

的文件夹
~

无论如何,这导致我遇到另一个问题,即执行以下命令:

rm -fr ~

oopsss 删除了我的主文件夹...

所以我的问题是:

为什么 rm 在别名上工作,而不在我所在位置列出的实际文件夹上工作?

您可以通过以下方式复制它:

cd /tmp/
mkdir "~"
which rm ~

现在你会看到which rm的输出~ 指向实际的主文件夹而不是在 tmp

中创建的 ~
rm -R ./~

这将使它在当前目录中查找 ~。如果你运行

rm -rf ~

你正在删除原来的 ~ 所以你需要用 ./~

间接

出现这种情况是因为特殊字符的扩展

~被shell扩展到主目录名之前rm被调用,rm程序不知道它。

可以通过将它们括在引号中来抑制像这样的魔法字符的扩展:

$ echo ~
/Users/fredbloggs
$ echo '~'
~