回到stderr和tee来记录文件?

时间:2012-11-13 10:41:52

标签: bash

在bash脚本中,

  

echo“error”1>& 2 | tee -a log

会在屏幕上打印stderr但是没有记录到文件,如何同时执行这些操作?

4 个答案:

答案 0 :(得分:9)

要将文本回显到日志文件和stderr,但不是stdout ,请尝试以下操作:

echo "error" | tee -a log 1>&2

答案 1 :(得分:8)

echo "error" 1>&2 | tee -a log

对于第一部分1>&2,您所说的是:“将stdout重定向到stderr”。所以 echoed 输出"error"转到stderr。

管道(|)仅从stdout读取,而不是stderr。因此,tee根本没有从管道中获得任何stdin。因此,它不会向日志文件添加任何内容。

答案 2 :(得分:6)

要在控制台上查看stdout和stderr并将两个流发送到日志,请将stderr重定向到stdout,如下所示:

progam.sh 2>&1 | tee -a log

答案 3 :(得分:0)

但是默认情况下只有stdout在管道中传递,所以在

中传递
$ echo "error" | tee 

tee只能看到来自echo的粗壮,而不是stderr。 stderr仍将显示在终端中。