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


14

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

system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");

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

为什么不只是rm /

Answers:


19

如果您从最顶层开始,则可能会擦除rm一些需要继续进行的操作(或系统的其他关键部分),而恶性将不完整。

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


5
rm加载到JFTR中时,即使删除了必要的变量,它也应该工作并保持工作。rm -rf /从交互式会话运行之后,您的外壳仍将正常工作
Ulrich Dangel 2013年

8
rm使用的最后一个命令,recents 将失败rm: it is dangerous to operate recursively on ‘/’;除此之外rm不需要初始化后访问任何资源。使用多个命令的原因可能是用户可能对这些目录具有不同的访问权限。
斯特凡希门尼斯

@UlrichDangel,我很早以前就发现了在Solaris上的艰难方法……
vonbrand

1
它会。您实际上需要使用rm --no-preserve-root /此工具才能正常工作
Max

1
“这些命令将确保至少有cwd和用户的主目录在被核化之前已经消失。” 如果我们在“ / bin /” :)中运行该脚本怎么办?最后两个命令将完全不运行。
XzKto

8

只是为了显示出越来越高的破坏力:删除当前目录,然后$HOME,最终销毁所有目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.