rm -rf有什么作用?


25

什么是rm -rf用来删除文件或目录的时候怎么办?

-r-f选项如何一起使用?



16
@DanDascalescu因为它是通过阅读手册页来简单回答的,所以手册页应该是任何人回答此类问题的第一站电话。
David Richerby 2015年

9
试试看。((剧透:不要。)
mallett 2015年

3
由Golly!这个问题一定是DevRobot的恶作剧!如果不参考手册页,如何将其提高到业力水平。现在...你是人类吗?
Cbhihe 2015年

2
完全像恶作剧一样读。好像有人试图问:“雨水是由水制成的吗?” (一个很好的答案是:通常是,但是将来,一旦人类将被摧毁了一半的地球植物,其中的50%将变成酸(如在酸雨中))
语法错误

Answers:


52

命令rm -rf与相同rm -r -f

rm的手册页(输入man rm终端以查看它)中-r可以:

remove directories and their contents recursively

-f做:

ignore nonexistent files and arguments, never prompt

因此,两者结合使用。

实际上,这是一个非常危险的命令,因为它将以递归方式删除您选择的目录中的所有内容(或仅删除您选择的文件),并且这样做不会提示您。

请谨慎使用此命令!


@Paul,斜杠会做什么?我使用此命令经常删除dirs和w / oa斜线。
章鱼

1
@Octopus,斜杠本身表示根目录。 rm -rf /理论上,它将删除计算机上位于您具有写许可权的目录中的每个文件。如果您是root用户,则意味着要清除整个系统。(在实践中,这是行不通的,因为GNU rm有一个特殊情况,rm -r /除非您也说了,否则拒绝允许--no-preserve-root。)
cjm 2015年

10
都一样,我不建议您尝试rm -rf /查看是否被正确捕获。
cjm 2015年

2
@mattburnett在VM中也是很危险的:您可能有不在VM本地的挂载。特别是,我认为在VM上挂载主机目录之一来在主机和VM之间共享文件是相当普遍的。
hvd 2015年

1
@mattburnett我有虚拟机。我没有隔离的VM。我只是不运行未知的可执行文件。:)
hvd

22

除了先前的正确答案之外,我还要教您如何钓鱼:

当您不确定命令的工作方式,具有的选项和功能时,请打开终端并输入

man <command>

例如:

man rm

进入那里后,您可以搜索该选项。手册页可能真的很长,因此在终端中输入:

/<pattern>

因此,例如,执行以下操作:

/-f

您可以轻松登陆:

-f, --force
              ignore nonexistent files and arguments, never prompt

对于-r,请执行以下操作:

-r, -R, --recursive
              remove directories and their contents recursively

您可以使用n(下一个)和N(上一个)在搜索结果之间移动。

奖金:

如果需要执行某些操作,但不知道命令名称,请使用它apropos来搜索手册页:

apropos <pattern>

例如:

apropos directory listing

8

rm是删除的简称。该r标志用于递归删除目录及其内容f,并强制执行,它会覆盖所有确认提示。


3
严格来说,这r flag is to remove directories 是不对的。它会删除目录及其内容,这是递归操作。根据您的话,它只会删除目录,子目录及其下的文件呢?因为目录条目仅包含名称
索引

您说得对,我将编辑我的答案。
克里斯(Chris

1
-r 递归删除目录及其内容
Jim Balter 2015年

3

如前所述,rm -rf <ARG>它旨在递归地强制删除文件,<ARG>目录在哪里(尽管可以是文件就可以了)。

-r(递归删除)的全部要点在于,rm如果目录不为空,则无法删除目录,这仅仅是因为rm使用(unlink)的基础系统调用仅在空目录上运行。因此,-r标志的作用是深度优先搜索到目录并先删除文件,然后只有在目录为空时才将其删除。通过find带有-deleteflag的命令也可以达到相同的效果(当您未指定通过进行过滤时-type,这是另一回事了)。

至于-f,它有两件事-一是阻止提示您是否要删除文件(例如,当您从目录中删除另一个用户拥有的文件时,它不会显示rm: remove write-protected regular empty file 'f1'?确认提示),而忽略不存在的文件。因此,例如,使用不存在的文件名,您应该会rm: cannot remove 'nonexistent': No such file or directory出错。

也可以看看:

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.