如何防止rm报告找不到文件?

时间:2012-04-20 13:43:01

标签: bash rm

我在BASH脚本中使用rm来删除许多文件。有时文件不存在,因此会报告许多错误。我不需要这条消息。我在man手册页中搜索了一个使rm安静的命令,但我找到的唯一选项是-f,从描述中可以看出,“忽略不存在的文件,从不提示”,似乎是正确的选择,但名称似乎不适合,所以我担心它可能会产生意想不到的后果。

  • -f选项是否是正确的rm沉默方式?为什么不称它为-q
  • 此选项是否还有其他功能?

6 个答案:

答案 0 :(得分:175)

-f的主要用途是强制删除那些文件 不能单独使用rm删除(作为一种特殊情况,它会“删除” 不存在的文件,从而抑制错误消息)。

您也可以使用

重定向错误消息
$ rm file.txt 2> /dev/null

(或您的操作系统等效)。您可以查看$?的值 在调用rm之后立即查看文件是否实际被删除。

答案 1 :(得分:54)

是的,-f是最合适的选择。

答案 2 :(得分:20)

-f是正确的标志,但对于测试运算符,不是rm

[ -f "$THEFILE" ] && rm "$THEFILE"

这确保文件存在并且是常规文件(不是目录,设备节点等......)

答案 3 :(得分:10)

\rm -f file永远不会报告未找到。

答案 4 :(得分:4)

至于rm -f执行“其他任何操作”,它会强制(-f--force的简写,在rm否则会要求您进行静默删除确认。例如,尝试从您可写入的目录中删除不可写的文件时。

答案 5 :(得分:-4)

我对cshell有同样的问题。我唯一的解决方案是在#34; rm"之前创建一个匹配模式的虚拟文件。在我的剧本中。