怎么发球去stderr?

时间:2012-12-10 16:26:23

标签: bash stderr tee

我想拆分stdout,以便将其打印到stdoutstderr。这听起来像是tee的工作,但语法却在逃避我 -

./script.sh | tee stderr

当然,这里应该如何引用stderr

3 个答案:

答案 0 :(得分:45)

我找到的唯一可以在交互式和非交互式shell中工作的跨平台方法是:

command | tee >(cat 1>&2)

tee的参数是文件或文件句柄。使用process substitution我们将输出发送到进程。在process = cat =中,我们将stdout重定向到stderr。 shell(bash / ksh)负责设置1和2文件描述符。

答案 1 :(得分:33)

./script.sh | tee /dev/fd/2

请注意,这取决于操作系统支持,而不是tee中的任何内置电源,因此不是通用的(但可以在MacOS,Linux,Solaris,FreeBSD上运行,可能适用于其他)。

答案 2 :(得分:-2)

./script.sh 2>&1 >/dev/null | tee stderr.out

将STDERR打开到STDOUT,然后处理STDOUT。