如何在 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 上有效。