如何将stdout和stderr都重定向到文件,并仍然只输出stderr?

3

我如何重定向命令的输出,使得标准输出和错误输出都被记录在一个文件中,同时仍然希望将标准错误输出作为输出显示。

我还不想使用bash来完成这个操作。有没有这样的方法?


通常情况下,Shell 会进行重定向。所以当你说你不想使用 Bash 时,你想要使用哪个 Shell 呢? - dcaswell
1个回答

3
这非常简单:
$ ( ./command.sh >> log ) 2>&1 | tee -a log

您可以在子shell中将命令的stdout写入log文件,然后将stderr写入管道,最后通过tee的方式将日志保存到log并复制到控制台。

使用示例:

$ cat command.sh               
#!/bin/sh

echo out
echo err > /dev/stderr

$ ( ./command.sh >> log ) 2>&1 | tee -a log
err
$ cat log
out
err

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接