SOLVED: Redirection in bash: stdout AND stderr to file while SIMULTANEOUSLY stderr to another file.
Joseph Sinclair
plug-discussion at stcaz.net
Sat Jul 11 13:08:16 MST 2009
A quick explanation in case anyone else wants to know why this works:
this part "3>&1 1>&2 2>&3" swaps stderr and stdout (so errors show up on stdout and non-errors show up on stderr)
then tee copies the *swapped* stdout to the file /tmp/junk.err, so error messages end up there
both stdout and stderr are then copied to junk.log ({>&} copies both outputs to one file), it doesn't care that they're
swapped around.
kitepilot at kitepilot.com wrote:
> I'm not quite sure how it works, bit it does exactly what I want... :)
>
>
> srcadmin at mothership[~]$ cat /tmp/junk.sh
> #!/bin/bash
>
> echo "GOOD boy..."
> echo "MORON BOY!!" >&2
> #END#
> srcadmin at mothership[~]$ rm -f /tmp/junk.err /tmp/junk.log
> srcadmin at mothership[~]$ ((/tmp/junk.sh 3>&1 1>&2 2>&3) | tee /tmp/junk.err)
>> & /tmp/junk.log
> srcadmin at mothership[~]$ cat /tmp/junk.log
> GOOD boy...
> MORON BOY!!
> srcadmin at mothership[~]$ cat /tmp/junk.err
> MORON BOY!!
> srcadmin at mothership[~]$
> ---------------------------------------------------
> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>
More information about the PLUG-discuss
mailing list