请记住,我只是在学习 bash,所以请以温和的方式解释。
rm -rf
并且rm -r
似乎在做同样的事情。教程 ( https://help.ubuntu.com/community/Beginners/BashScripting ) 指出这-f
是强制的,计算机不会请求删除文件的权限。
为了验证这一点,我创建了一个锁定的文件,但-r
并-rf
达到不删除文件相同的结果(权限被拒绝)。
为什么是这样?
在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
)。
以下是这两个选项的作用的解释。
-f 删除目录中的所有文件(无论是否写保护)而不提示用户。然而,在写保护目录中,文件永远不会被删除(无论其权限是什么),但不会显示任何消息。如果尝试删除写保护目录,此选项将不会抑制错误消息。
-r 递归删除参数列表中的目录和子目录。该目录将清空文件并删除。通常会提示用户删除该目录中包含的所有写保护文件。但是,如果使用 -f 选项,或者标准输入不是终端并且未使用 -i 选项,则会在没有提示的情况下删除写保护文件。使用此选项遇到的符号链接将不会被遍历。如果尝试删除非空的写保护目录,该实用程序将始终失败(即使使用 -f 选项),从而导致错误消息。关于 rm
另请参阅命令参考
听起来您没有删除此文件的权限,也许管理员帐户不是 root。问题不应该是rm。
启用root: http: //support.apple.com/kb/ht1528
无论如何,OSX 不是 Ubuntu,也不是 Linux,因此那里的情况可能有所不同,最好在一些 OSX 论坛中询问...