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