可以安全删除名为“~”的文件夹

可以安全删除名为“~”的文件夹

我用来输出一些文件的程序显然不能很好地理解快捷方式“~”(目录),并且做了一些让我感到困惑的诡计。

它没有将文件放在我期望的位置 (/home/me),而是在它的子目录中创建了一个名为“~”的文件夹 (someprogram/~)

drwxr-xr-x 3 me 用户 4096 1 月 30 日 09:34 ~

如果我 cd 进入它我会回到 /home/me

这只是一个硬链接吗?我想如果我尝试删除它,我的主文件夹也会被删除。我怎样才能安全地删除它而不删除所有内容?

答案1

它不应该是硬链接,因为据我所知,文件夹不能通过 root 进行硬链接,即使这样也可能无法实现,因为系统限制。为了确保万无一失,请尝试以下操作(不要将 \ 与 / 混淆):

unlink \~

(您必须转义 ~,否则 shell 会将其解释为“取消链接 $HOME”)。

请注意,取消链接将删除它,即使它是一个常规文件(但如果它是一个目录则不会)

如果它是一个目录,只需执行以下操作:

rm -Ri \~

再次,转义波浪号。您需要执行 rm -Ri,这样它会在每次删除之前提示您,以防您忘记转义波浪号并意外删除您的主目录。

答案2

只有当单词以 开头时,shell 才会进行波浪符号扩展~。在单词内部或末尾,不会对 进行特殊处理~。许多 shell(bash、zsh、pdksh、tcsh、dash、jsh、sash)都是如此。还有一些 shell 不知道波浪符号扩展(sh(Bourne shell)、ash)

因此,如果您将其转义或使用路径而不是~,则不会扩展任何内容。它是相对路径还是绝对路径并不重要,只要在 之前必须有内容即可~

rm -Ri \~
rm -Ri '~'
rm -Ri "~"
rm -Ri ./~
rm -Ri /full/path/~

相关内容