我想創建一個基本上將STDERR重定向到STDOUT的函數。 我熟悉重定向當它涉及到執行命令,如:捕捉任何STDERR數據的函數
$ echo "all to out" >&2
all to out
$ echo "all to err" >&2
all to err
$ echo "err to out" 2>&1
err to out
$ echo "out to err" 1>&2
out to err
但我想要做的,就是寫一個可以用來重定向的所有數據,以前的命令發送功能到stderr。事情是這樣的:
$ echo -e "foo\nbar\nbaz\nquux" 1>&2 | COMMAND_HERE | grep bar
bar
我打算有這樣的功能,但它應該是一樣容易使用通過直接在命令行功能的源(的作品)。
這裏有幾件事情我已經試過,沒有哪個工作:
$ function 2to1 { exec 2>&1; }
$ echo -e "foo\nbar\nbaz\nquux" 1>&2 | 2to1 | grep bar
foo
bar
baz
quux
$ echo -e "foo\nbar\nbaz\nquux" 1>&2 | tee >(cat 2>&1) | grep bar
foo
bar
baz
quux
如果2to
功能或tee
命令工作就像我想它,然後輸出只會吧 。
一對夫婦的文章/線程我發現有些暗示,除非我惹重定向被執行的命令之前,我不會執行命令(意思的數據是命令後能夠看到stderr
正在管道)
任何輸入將不勝感激 - 謝謝!