如何在Linux中隐藏shell应用程序的输出?

如何在Linux中隐藏shell应用程序的屏幕输出(printf)?

你可以redirect任何程序的输出,这样它就不会被看到。

$ program > /dev/null 

这将redirect标准输出 – 你仍然会看到任何错误

 $ program &> /dev/null 

这将redirect所有输出,包括错误。

命令行上有三个IO设备可用。

  standard in - 0 standard out - 1 standard error - 2 

要将标准输出(默认输出)redirect到文件(并覆盖文件),请使用

  command > file.log 

要追加到file.log,请使用2> s

  command >> file.log 

将标准错误redirect到file.log,使用

  command 2> file.log 

并追加

  command 2>> file.log 

将输出合并成一个stream并将它们全部发送到一个地方

  command > file.log 2>&1 

这将2(stderr)发送到1(stdout),并将stdout发送到file.log

请注意,也可以将标准redirect到期望标准input的命令

  command << file.txt 

编辑
有关更多详细信息,请查看“ 高级Bash脚本指南”

隐藏标准输出

 ./command >/dev/null 

隐藏标准和错误输出

 ./command >/dev/null 2>&1 

隐藏标准和错误输出并释放terminal(在后台运行命令)

 ./command >/dev/null 2>&1 & 

如果你只是想隐藏输出(而不是保存到一个文件),你可以使用:

编辑:

$命令&> / dev / null

对于Mac OS X(10.6“雪豹”):

如果需要通过检查输出/错误文件描述符来让程序不知道输出而隐藏输出,则可以尝试在shell中使用以下内容:

 stty flusho; command ;stty -flusho 

或者您只想通过以下方式隐藏terminal的input:

 stty -echo; command ;stty echo 

请参阅stty(1)手册页以获取更多信息

对于Linux而言,我所知道的是Ubunutu(10.04“Lucid”)和一些“Debian / Arch”(下面注释 – tnx hendry)没有flusho设置(我在man-page中看不到任何其他合适的东西)。 无论如何, echo设置工作在Ubuntu上。