为什么 rm -rf 没有产生错误?

为什么 rm -rf 没有产生错误?

ubuntu 9.10 如果你输入 rm ,你会看到缺少操作数的错误,rm -r 也是一样,但是 rm -f 不会产生任何错误。-f 应该是“强制”而不是“消除错误”

答案1

来自Unix 手册页

-f, --force
忽略不存在的文件,从不提示

忽略不存在的文件意味着如果没有文件需要删除,则不会出现错误,当您使用 rm -f 且未指定文件时,就会出现这种情况。据我所知,这是预期的行为。它不会忽略所有错误,但 -f 不要求将文件列为操作数,因此不会抛出错误。

答案2

SUSv3 说:

-f 不提示确认。如果操作数不存在,则不写入诊断消息或修改退出状态。任何先前出现的 -i 选项都应被忽略。

答案3

要理解为什么文件参数实际上是可选的,您必须考虑到在许多脚本中,要删除的文件列表存储在变量中,而使用 -f 可以让您不关心列表是否为空。您可以简单地执行以下操作:

rm -f $FILES

而不是更麻烦的:

-z "$FILES" || rm $FILES

因此,当命令行中没有给出文件时,“忽略不存在的文件”选项不会失败,这是合乎逻辑的。

相关内容