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

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

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

答案1

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

$ program > /dev/null

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

$ program &> /dev/null

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

答案2

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

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

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

 command > file.log

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

 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 脚本指南

答案3

隐藏标准输出:

./command >/dev/null

隐藏标准和错误输出:

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

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

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

答案4

为了Mac OS X 版本 10.6(雪豹):

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

stty flusho; command ;stty -flusho

或者如果您只是想顺便隐藏终端的输入:

stty  -echo; command ;stty  echo

有关详细信息,请参阅 stty(1) 手册页。

对于 Linux,我所知道的是Ubuntu 10.04(Lucid Lynx) 和一些 Debian/Arch Linux (评论如下 - 谢谢,hendry) 没有该flusho设置 (而且我在手册页中看不到任何其他合适的设置)。echo无论如何,该设置在 Ubuntu 上有效。

相关内容