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

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

  • -f选项是关闭rm的正确方法吗?为什么它不叫-q?
  • 这个选项还有其他功能吗?
155343 次浏览

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

只要rm -f执行“任何其他”,它就会强制(-f--force的简称)在rm会要求您确认的情况下静默删除。例如,当试图从您可写的目录中删除不可写的文件时。

-f的主要用途是强制删除需要删除的文件 不能单独使用rm删除(作为特殊情况,它会“删除”

.

.

.

您还可以使用重定向错误消息

$ rm file.txt 2> /dev/null

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

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

-f是正确的标志,但用于测试操作符,而不是rm

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

这确保文件存在并且是一个常规文件(而不是目录、设备节点等)。

我对cshell也有同样的问题。唯一的解决方案是在脚本中创建一个匹配“rm”之前的模式的虚拟文件。