使用/ dev / tty写入stderr?

时间:2014-01-23 05:50:13

标签: bash stdout stderr tty

我想使用/ dev / tty只写stderr。如果我直接写入/ dev / tty(使用tee),似乎会在stdout上打印出来。那是对的吗?如何指定我要打印到stderr?

目前bash中的行似乎是

echo "foo" >&2 | tee /dev/tty | logger -it "my_script"

1 个答案:

答案 0 :(得分:1)

如果我们将你的命令与#

之后的每个命令的结果分开
echo "foo" >&2 # echo "foo" and redirect to fd 2 (/dev/sdterr)
| #pipe stdout to  
tee /dev/tty #both send stdout to file /dev/tty, which is terminal file that can output both stdout and stderr depending on what you pass to it (so you probably want /dev/stdout/ or /dev/stderr directly instead) and pass it along to the next pipe
| #pipe stdout to
logger -it "my_script"

所以这取决于你想做什么(在上面的foo被重定向到stderr并且没有任何东西被传送到tee

如果你想将foo打印到stderr并将stdout传递给你的脚本你就可以了

echo "foo" | tee /dev/stderr | yourscirpt

然后tee将打印到stderr,而foo将以管道输出到你的脚本。