删除名为 ~ 的文件夹
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 '~'
~
我的 bash 脚本中有错误创建了名为
的文件夹~
无论如何,这导致我遇到另一个问题,即执行以下命令:
rm -fr ~
oopsss 删除了我的主文件夹...
所以我的问题是:
为什么 rm 在别名上工作,而不在我所在位置列出的实际文件夹上工作?
您可以通过以下方式复制它:
cd /tmp/
mkdir "~"
which rm ~
现在你会看到which rm的输出~ 指向实际的主文件夹而不是在 tmp
中创建的 ~rm -R ./~
这将使它在当前目录中查找 ~。如果你运行
rm -rf ~
你正在删除原来的 ~ 所以你需要用 ./~
出现这种情况是因为特殊字符的扩展
~
被shell扩展到主目录名之前rm
被调用,rm
程序不知道它。
可以通过将它们括在引号中来抑制像这样的魔法字符的扩展:
$ echo ~
/Users/fredbloggs
$ echo '~'
~