我想使用/ dev / tty只写stderr。如果我直接写入/ dev / tty(使用tee),似乎会在stdout上打印出来。那是对的吗?如何指定我要打印到stderr?
目前bash中的行似乎是
echo "foo" >&2 | tee /dev/tty | logger -it "my_script"
答案 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将以管道输出到你的脚本。