我有一个运行带参数的程序的bash脚本。该程序输出一些状态(这样做,这样做......)。这个程序没有选择安静。如何防止脚本显示任何内容?
我正在寻找类似windows“echo off”的东西。
答案 0 :(得分:464)
以下内容将标准输出发送到空设备(位桶)。
scriptname >/dev/null
如果您还希望在那里发送错误消息,请使用其中一个(第一个可能不适用于所有shell):
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
并且,如果您要记录消息但未看到消息,请将/dev/null
替换为实际文件,例如:
scriptname &>scriptname.out
为了完整性,在Windows cmd.exe(其中“nul”相当于“/ dev / null”)下,它是:
scriptname >nul 2>nul
答案 1 :(得分:40)
像
这样的东西script > /dev/null 2>&1
这将阻止标准输出和错误输出,将它们重定向到/dev/null
。
答案 2 :(得分:11)
尝试
<<<<<<< HEAD:more information here
: $(yourcommand)
是“什么都不做”的缩写。
:
只是你的命令。
答案 3 :(得分:7)
在某些情况下可能适合的替代方法是将命令的结果分配给变量:
~
由于Bash和其他POSIX命令行解释器不将变量赋值视为命令,因此尊重当前命令的返回码。
注意:对$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1
或typeset
关键字的分配被视为一个命令,因此评估后的返回代码是分配本身,而不是执行的命令子壳:
declare
答案 4 :(得分:5)
像andynormancx一样使用这个:(如果你在Unix环境中工作)
scriptname > /dev/null
或者你可以使用它:(如果你在Windows环境中工作)
scriptname > nul
答案 5 :(得分:4)
从 The Linux Documentation Project :
查看此示例3.6示例:stderr和stdout 2文件
这会将程序的每个输出都放在一个文件中。如果您希望命令以绝对静音方式传递,这有时适用于cron条目。
rm -f $(find / -name core) &> /dev/null
那就是说,你可以使用这个简单的重定向:
/path/to/command &>/dev/null
答案 6 :(得分:1)
在您的脚本中,您可以将以下内容添加到您知道要提供输出的行中:
some_code 2>>/dev/null
否则你也可以尝试
some_code >>/dev/null