将运行命令" rm -R /"在类Unix系统中完全擦除分区?

时间:2015-07-06 18:21:31

标签: bash unix

标题几乎要求一切。我认为,运行这个命令对系统来说是灾难性的,我不打算在我的机器上测试我的理论,只是好奇-R递归选项与rm的强大功能

4 个答案:

答案 0 :(得分:2)

如果您有足够的权限,此命令将删除整个文件系统中的所有文件;但这并不等同于"擦除分区"。如果您希望分区完全为空,您还需要删除空文件系统,严格来说也可能是分区表。

多个分区上可能还有多个已挂载的文件系统;所以"分区"在这方面也不是非常正确或定义明确。以递归方式删除所有内容将通过各自的挂载点影响所有已安装的分区。

理论上,文件系统只能将文件系统条目标记为已删除,但实际上不会覆盖除目录条目之外的任何内容。这就是"取消删除"某些文件系统类型的实用程序可以相当成功。但是,在大多数原生U * x文件系统上,通常不会设置这些内容。

答案 1 :(得分:1)

rm -R /

将清除所有文件/文件夹,当前shell(运行代码的那个)具有写入权限(不包括某些特殊情况文件)。

rm -Rf /

将清除所有文件/文件夹,当前shell(运行代码的那个)具有写访问权限(无论文件的条件如何)。

因此,如果您在root shell或sudo中运行上述命令,则整个磁盘将被清空(未安装的分区将被保留)。

答案 2 :(得分:1)

不,在大多数Unix机器上,这个命令没有灾难性的影响,这与迄今为止的回复不同。

并非我希望您在生产服务器上进行实验,但假设您运行的是最近符合POSIX标准(例如:Solaris 10,11)或使用GNU rm newer than 2006的Linux发行版),命令不会做任何事情。

POSIX标准states

...或者如果操作数解析为根目录,则rm应将诊断消息写入标准错误,并且不再对此类操作数执行任何操作。

如果您真的想尝试删除整个文件系统,则需要使用GNU rm添加--no-preserve-root选项。或者,您可以使用与/不同的内容,例如/* /.??*等。

答案 3 :(得分:0)

好吧,你没有包含-f,所以它很可能会在它遇到具有文件系统保护的系统文件时很早就确认。

但除此之外,假设您还以root / sudo身份运行:是的,这不仅会删除当前的根分区,还会删除已挂载的任何其他分区。

(如果您的目的是实际擦除特定分区(或整个驱动器),请学习'dd'命令。小心。;))