我想创建一个基本上将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
正在管道)
任何输入将不胜感激 - 谢谢!