2014-01-23 167 views
0

我想僅使用/ dev/tty寫入stderr。如果我直接寫入/ dev/tty(使用tee),那麼似乎會在stdout上打印出來。那是對的嗎?我如何指定要打印到標準錯誤?使用/ dev/tty寫入stderr?

目前在bash線看起來像

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

你有一個在stdout和stderr上產生輸出的命令,你想記錄stderr並在屏幕上顯示它? –

+2

也許你真正想要的是'echo「foo」| tee/dev/stderr | logger -it「my_script」' – anishsane

+1

你可能會覺得這個答案有幫助:http://stackoverflow.com/a/692407/1608708 – imp25

回答

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被重定向到標準錯誤,並沒有被輸送到tee

如果你要打印FOO到標準錯誤,並通過標準輸出到你的腳本ÿ OU可以做

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

然後tee將打印到stderr和foo將得到管道的標準輸出到yourscript。

+0

你完全贊同我的意圖 - 打印到當前的stderr,然後在其他地方輸送。 – ChaimKut

相關問題