如何在Linux中隐藏Shell应用程序的屏幕输出(printf)?
stackoverflow.com/questions/2292847/...
—
西罗桑蒂利新疆改造中心法轮功六四事件
如何在Linux中隐藏Shell应用程序的屏幕输出(printf)?
Answers:
您可以重定向任何程序的输出,使其不会被看到。
$ program > /dev/null
这将重定向标准输出-您仍然会看到任何错误
$ program &> /dev/null
这将重定向所有输出,包括错误。
wget
您可以使用-q
选项使其安静。
命令行上有三个可用的IO设备。
standard in - 0
standard out - 1
standard error - 2
要将标准输出(默认输出)重定向到文件(并覆盖文件),请使用
command > file.log
要附加到file.log,请使用2> s
command >> file.log
要将标准错误重定向到file.log,请使用
command 2> file.log
并追加
command 2>> file.log
将输出合并为一个流并将其全部发送到一个位置
command > file.log 2>&1
这会将2(stderr)发送到1(stdout),并将stdout发送到file.log
注意,也可以将standard重定向到需要stdin的命令中
command << file.txt
编辑
有关更多详细信息,请查看《高级Bash脚本指南》
command > file.log 2>&1
工作原理吗?
> file
,第二个是2>&1
。第一个将标准重定向到文件。第二个使用第二个文件描述符,并将其重定向到第一个。您可以执行相反的操作,使用将标准输出重定向到标准错误>&2
,然后使用将标准错误重定向到文件2> file
。
如果只想隐藏输出(而不是将其保存到文件中),则可以使用:
编辑:
$命令&> / dev / null
对于Mac OS X(10.6“雪豹”):
如果需要通过检查输出/错误文件描述符来隐藏输出而不让程序知道它,则可以尝试在shell中使用以下命令:
stty flusho; command ;stty -flusho
或者,如果您只想通过这种方式隐藏来自终端的输入:
stty -echo; command ;stty echo
有关更多信息,请参见stty(1)手册页
对于Linux,我只知道Ubunutu(10.04“清醒”)和一些“ Debian / Arch”(在下面评论-tnx hendry)没有flusho
设置(我在手册页中看不到其他合适的设置) 。该echo
设置仍然可以在Ubuntu上使用。