我的bash脚本中有一个错误,该错误创建了名为
的文件夹~
无论如何,这导致了我执行以下命令的另一个问题:
rm -fr ~
ooopsss删除了我的主文件夹...
所以我的问题是:
为什么rm在别名上而不是在我所在的实际文件夹上起作用?
您可以通过以下方式复制它:
cd /tmp/
mkdir "~"
which rm ~
现在您将看到其中的输出rm〜 指向实际的主文件夹,而不是tmp中创建的〜
答案 0 :(得分:6)
~
在被调用之前被shell扩展为主目录名称 。rm
并未意识到。
可以通过用引号引起来抑制此类魔术字符的扩展:
rm
答案 1 :(得分:4)
rm -R ./~
这将使它在当前目录中查找〜。如果您运行
rm -rf ~
您要删除原始的〜,因此您需要使用./~
间接
发生这种情况是因为特殊字符的扩展