我想只使用/dev/tty 写入 stderr。如果我直接写信给/dev/tty(带 tee),似乎它会在 stdout 上打印出来。这是对的吗?如何指定要打印到 stderr?
目前 bash 中的行看起来像
echo "foo" >&2 | tee /dev/tty | logger -it "my_script"
如果我们将您的命令分开,并在 # 之后的每个命令的结果
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被重定向到stdrr,没有任何东西被管道传输到tee
)
如果你想打印foo到stdrr并将stdout传递给你的脚本,你可以这样做
echo "foo" | tee /dev/stderr | yourscirpt
然后tee
将打印到 stderr,foo 将作为 stdout 通过管道传输到您的脚本。