it-swarm.cn

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

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

47
Jader Dias

您可以重定向任何程序的输出,使其不会被看到。

$ program > /dev/null

这将重定向标准输出-您仍然会看到任何错误

$ program &> /dev/null

这将重定向所有输出,包括错误。

72
theotherreceive

命令行上有三个I/O设备。

 standard input  - 0
 standard output - 1
 standard error  - 2

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

 command > file.log

要附加到file.log,请使用两个>s

 command >> file.log

要将标准错误重定向到file.log,请使用

 command 2> file.log

并追加

 command 2>> file.log

将输出合并为一个流并将其全部发送到一个位置

 command > file.log 2>&1

这会将2(标准错误)发送到1(标准输出),并将标准输出发送到file.log

请注意,还可以将标准输入重定向到需要标准输入的命令中

 command << file.txt


有关更多详细信息,请查看 《高级Bash脚本指南》

30
Matt Simmons

隐藏标准输出:

./command >/dev/null

隐藏标准输出和标准错误:

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

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

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

如果只想隐藏输出(而不是将其保存到文件中),则可以使用:

编辑:

$命令&>/dev/null

3
Lucho

对于 Mac OS X v10.6 (Snow Leopard):

如果需要在不通过检查输出/错误文件描述符让程序知道输出的情况下隐藏输出,则可以尝试在Shell中使用以下命令:

stty flusho; command ;stty -flusho

或者,如果您只想通过这种方式隐藏来自终端的输入:

stty  -echo; command ;stty  echo

有关更多信息,请参见stty(1)手册页。

对于Linux,我只知道 buntu 10.04 (Lucid Lynx)和一些Debian/Arch Linux(在下面评论-谢谢hendry)没有flusho设置(我在手册页中看不到其他合适内容)。 echo设置仍然可以在Ubuntu上使用。

2
vike