`rm -rf ` 和 `rm -r` 具有相同的结果

Sta*_*x64 6 rm coreutils

请记住,我只是在学习 bash,所以请以温和的方式解释。

rm -rf并且rm -r似乎在做同样的事情。教程 ( https://help.ubuntu.com/community/Beginners/BashScripting ) 指出这-f是强制的,计算机不会请求删除文件的权限。

为了验证这一点,我创建了一个锁定的文件,但-r-rf达到不删除文件相同的结果(权限被拒绝)。

为什么是这样?

Tak*_*kat 6

Ubuntu 中rm 命令在删除我们拥有的文件时按预期运行,而在使用 option 运行时不提示-f

写保护文件的示例:

:~/Test$ rm test.txt
rm: remove write-protected regular empty file ‘test.txt’? n
:~/Test$ rm -f test.txt
:~/Test$
Run Code Online (Sandbox Code Playgroud)

Root 将能够删除所有文件,而不管权限如何。这就是为什么我们-f在运行sudo rm.

我们应该意识到 Unix 命令的行为在不同的操作系统上可能会有所不同。

还请注意在rm递归运行时仔细检查您的命令( -r)。当在错误的路径上意外发出此命令时,将不可逆转地清除那里的所有文件。这可能对您的系统健康造成危险,在不提示错误的情况下运行时更是如此 ( -f)。


Mit*_*tch 4

以下是这两个选项的作用的解释。

-f 删除目录中的所有文件(无论是否写保护)而不提示用户。然而,在写保护目录中,文件永远不会被删除(无论其权限是什么),但不会显示任何消息。如果尝试删除写保护目录,此选项将不会抑制错误消息。

-r 递归删除参数列表中的目录和子目录。该目录将清空文件并删除。通常会提示用户删除该目录中包含的所有写保护文件。但是,如果使用 -f 选项,或者标准输入不是终端并且未使用 -i 选项,则会在没有提示的情况下删除写保护文件。使用此选项遇到的符号链接将不会被遍历。如果尝试删除非空的写保护目录,该实用程序将始终失败(即使使用 -f 选项),从而导致错误消息。关于 rm

另请参阅命令参考


inn*_*and 1

听起来您没有删除此文件的权限,也许管理员帐户不是 root。问题不应该是rm。

启用root: http: //support.apple.com/kb/ht1528

无论如何,OSX 不是 Ubuntu,也不是 Linux,因此那里的情况可能有所不同,最好在一些 OSX 论坛中询问...