如何防止rm报告没有find文件?

我在BASH脚本中使用rm来删除许多文件。 有时文件不存在,所以报告很多错误。 我不需要这个消息。 我已经在man页面search了一个让rm安静的命令,但是我发现的唯一的select是-f ,从描述中,“忽略不存在的文件,永远不会提示”似乎是正确的select,但是名字没有似乎适合,所以我担心它可能会有意想不到的后果。

  • -f选项是否正确地沉默rm ? 为什么不叫它-q
  • 这个选项是否还有其他的作用?

-f的主要用途是强制删除不会被rm自身删除的文件(特殊情况下,它会“删除”不存在的文件,从而抑制错误信息)。

您也可以使用redirect错误消息

 $ rm file.txt 2> /dev/null 

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

是的, -f是最合适的select。

-f是正确的标志,但对于testing操作员而言,不是rm

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

这确保文件存在,并且是一个普通的文件(不是目录,设备节点等)

\rm -f file将永远不会报告未find。

至于rm -f做“别的事情”,在rm否则会要求你确认的情况下,它强制( -f--force简写)无声移除。 例如,试图从您可写入的目录中删除不可由您写入的文件。

我有相同的问题cshell。 我唯一的解决scheme是创build一个虚拟文件,在我的脚本“rm”之前匹配模式。