It's well known how to pipe the standard ouput of a process into another processes standard input:
proc1 | proc2
But what if I want to send the standard error of proc1 to proc2 and leave the standard output going to its current location? You would think bash
would have a command along the lines of:
proc1 2| proc2
But, alas, no. Is there any way to do this?
There is also process substitution. Which makes a process substitute for a file.
You can send stderr
to a file as follows:
process1 2> file
But you can substitute a process for the file as follows:
process1 2> >(process2)
Here is a concrete example that sends stderr
to both the screen and appends to a logfile
sh myscript 2> >(tee -a errlog)