我在BASH脚本中使用rm
来删除许多文件。有时文件不存在,因此会报告许多错误。我不需要这条消息。我在man手册页中搜索了一个使rm
安静的命令,但我找到的唯一选项是-f
,从描述中可以看出,“忽略不存在的文件,从不提示”,似乎是正确的选择,但名称似乎不适合,所以我担心它可能会产生意想不到的后果。
-f
选项是否是正确的rm
沉默方式?为什么不称它为-q
?答案 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"之前创建一个匹配模式的虚拟文件。在我的剧本中。