Hi,
I got confused by output redirection, even though I have used it like
a thousand times:
cmd1 | cmd2 | cmd3
this pipes cmd1 stdout to cmd2's stdin and finally cmd2's stdout is
piped to cmd3's stdin. All cmd[1-3] stderr are displayed (presumably)
at the terminal along with cmd3's stdout, right?
And when you do
cmd1 |[2] cmd2 | cmd3
you get cmd1's stderr piped to cmd2's stdin and cmd2's stdout piped to
cmd3 stdin. cmd1's stdout along with cmd2's stderr and cmd3's stdout
and stderr go to the terminal.
But when you do something like
cmd1 | cmd2 |[2] cmd3
you get cmd1's stdout piped to cmd2's stdin; but my confusion begins
here: is it cmd1's or cmd2's stderr that gets redirected to cmd3's
stdin? maybe both? my guess is that cmd2's stderr is the one who gets
piped to cmd3's stdin and cmd1's stderr goes to the terminal. If this
is the case, how can I redirect cmd1's stderr to cmd3's stdin instead
of cmd2's? or both?
It's easy to think of more complex cases.
Saludos

-- 
Hugo

Reply via email to