在我的shell脚本我有几行:
rm tempfl.txt
rm tempfl2.txt
如果这些都不存在,我得到的错误信息:
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
有没有办法只能抑制,即使他们并不总是出现这些消息,因为可能存在的文件?
在我的shell脚本我有几行:
rm tempfl.txt
rm tempfl2.txt
如果这些都不存在,我得到的错误信息:
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
有没有办法只能抑制,即使他们并不总是出现这些消息,因为可能存在的文件?
你有两个选择:
禁止rm
警告
$ rm tempfl.txt 2> /dev/null
重定向脚本输出/dev/null
$ ./myscript.sh 2> /dev/null
后者遗漏了你的脚本生成所有其他警告消息的缺点。
至于其他的答案状态,您可以使用command 2> /dev/null
扔掉从输出错误command
但是,什么是怎么回事?
>
是用于重定向输出操作。 2
是标准错误输出流的引用,即2>
=重定向错误输出。
/dev/null
是“空设备”,这只是吞下提供给它的任何输入。 您可以将二者结合起来,从一个命令,有效地扔掉输出。
全参考:
> /dev/null
扔掉标准输出 1> /dev/null
扔掉标准输出 2> /dev/null
扔掉stderr的 &> /dev/null
扔掉标准输出 和 标准错误 你应该重定向像所有的错误信息到/ dev / null的
rm tempfl2.txt 2> /dev/null
试试这个命令:
rm -f tempfl.txt
-f选项的作用就像这样:
-f, --force ignore nonexistent files, never prompt
该命令还没有报告非零的错误代码的情况下,该文件不存在。
添加到上述问题的答案:这可能是一个更好的主意,让错误信息(如拒绝许可或一些这样的)。 只是测试文件的存在,删除它之前:
[ -f file.txt ] && rm file.txt
这是假设一个Bourne外壳一样,例如庆典。 上面有额外的好处,它不会尝试删除一个目录,一些rm
不能做。
我们可以使用2> /dev/null
抑制输出误差和|| true
|| true
保证成功退出状态:
rm foo
=> rm: cannot remove ‘foo’: No such file or directory
rm foo 2> /dev/null
echo $?
=> 1
rm foo 2> /dev/null || true
echo $?
=> 0
如果你是在一个shell脚本,生成文件等使用的命令,也许你需要这个。