BASH - 如何将它们发送到仅对话标准输出和文件/root/sh/sh.log标准输出+输出错误

时间:2012-07-13 10:10:05

标签: bash shell

美好的一天

如何将它们发送到仅对话标准输出和文件/root/sh/sh.log标准输出+输出错误

# I need
dialog          == standard output
/root/sh/sh.log == standard output + error output 

# My experimental
start 2>&1 /root/sh/menu.log | dialog --stdout --progressbox 20 200;

谢谢

2 个答案:

答案 0 :(得分:0)

我会尝试类似的东西 开始2>> /root/sh/sh.log | tee -a /root/sh/sh.log |对话框

答案 1 :(得分:0)

您可以尝试使用tee命令和进程替换

{ start | tee >( dialog --stdout --progressbox 20 200) ; } > /root/sh/menu.log 2>&1

在命令组中,标准输出传递给tee,该文件写入“文件”,该文件实际上是一个将其输入传递给dialog命令的进程替换构造。可以把它想象成标准输出的分叉管道。

由于未重定向标准错误,并且tee将其输入传递回标准输出,因此两者都会从命令组中传出。首先,我们将标准输出重定向到所需的日志文件,然后我们将标准错误复制到标准输出的任何位置。