xkcd 笑话中这个特定的“rm”序列的原因是什么?

sha*_*oth 15 rm command

这是这个 xkcd 漫画的一部分,其中的想法是作者无法编写排序程序,因此他添加了删除所有文件的代码

system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");
Run Code Online (Sandbox Code Playgroud)

AFAIK 删除所有内容的规范方法是删除rm /从 root 开始的所有内容。这是最后一个命令和之前的两个命令,尝试访问rm当前目录和主目录的内容。

为什么不只是rm /

Flu*_*lup 20

如果你从最顶层开始,你可能会抹去一些rm(或系统的其他关键部分)需要继续下去的东西,而邪恶将不完整。

这些命令将确保在进入核之前至少 cwd 和用户的主目录已经消失。

  • 最近的 `rm` 会在最后一个带有 `rm 的命令上失败:在 '/'` 上递归操作是危险的;除此之外,`rm` 在初始化后不需要访问任何资源。使用多个命令的原因可能是用户可能对这些目录具有不同的访问权限。 (8认同)
  • JFTR 作为 rm 加载到内存中,即使删除了必要的变量,它也应该工作并继续工作。从交互式会话运行 `rm -rf /` 后,您的 shell 应该仍在工作 (5认同)

von*_*and 8

只是为了显示不断增加的破坏性:删除当前目录,然后$HOME,最后全部销毁。