`rm -rf` 和 `rm -r` 的结果相同。

请记住,我只是在学习bash,所以请用简单的术语解释。 rm -rfrm -r似乎做同样的事情。教程(https://help.ubuntu.com/community/Beginners/BashScripting)说明-f是强制删除,计算机将不会询问是否要删除文件。
为了测试这一点,我创建了一个被锁定的文件,但-r-rf得到了相同的结果,即无法删除文件(权限被拒绝)。
为什么会这样呢?
4个回答

在Ubuntu中,rm命令在使用选项-f运行时,按预期删除我们拥有的文件时不会提示。
写保护文件的示例:
:~/Test$ rm test.txt
rm: remove write-protected regular empty file ‘test.txt’? n
:~/Test$ rm -f test.txt
:~/Test$

Root能够删除所有文件,不管权限如何。这就是为什么当我们以sudo rm运行时,可能看不到使用-f选项的区别。
我们应该意识到Unix命令在不同操作系统上的行为可能会有所不同。
在运行rm递归(-r)命令时,请务必仔细检查您的命令。如果错误地在错误的路径上执行此命令,将无法恢复地清除所有文件。这对您的系统健康可能很危险,尤其是在没有提示错误的情况下运行(-f)。

这是关于两个选项的解释。

-f 在不提示用户的情况下,删除目录中的所有文件(无论是否为只读)。然而,在一个只读目录中,文件永远不会被删除(无论其权限如何),但不会显示任何消息。如果尝试删除一个只读目录,此选项将无法抑制错误消息。

-r 递归地删除参数列表中的目录和子目录。目录将被清空并删除。通常会提示用户删除目录中的任何只读文件。然而,如果使用了 -f 选项,或者标准输入不是终端且未使用 -i 选项,则会在不提示的情况下删除只读文件。使用此选项时遇到的符号链接将不会被遍历。如果尝试删除非空的只读目录,无论是否使用了 -f 选项,实用程序都将始终失败(导致错误消息)。关于 rm

请参阅命令参考

让我们搞清楚一件事:
  • rm -rf 目录 表示强制(不询问,直接执行)递归删除目录
  • rm -r 目录 表示尝试递归删除目录

这是man rm所说的:

-f, --force
       ignore nonexistent files and arguments, never prompt
[...]
-r, -R, --recursive
       remove directories and their contents recursively

手册页面上的另一个好消息:

[...] 如果文件不可写,标准输入是终端,并且没有给出 -f 或 --force 选项,或者给出了 -i 或 --interactive=always 选项,rm会提示用户是否删除该文件。如果回答是否定的,文件将被跳过。

当然,如果您没有权限删除文件,您将收到 rm: cannot remove ‘file_name’: Permission denied 错误。无论如何,-f 选项都不能用于删除您没有权限的文件!


听起来你没有权限删除这个文件,可能管理员账户不是根账户。问题不应该是rm命令。
启用根权限: http://support.apple.com/kb/ht1528 不过,OSX不同于Ubuntu和Linux,所以情况可能会有所不同,还是在一些OSX论坛上咨询一下比较好。