[Techtalk] re: Joining commands together in bash

Conor Daly conor.daly at oceanfree.net
Tue May 13 15:37:52 EST 2003


On Tue, May 13, 2003 at 07:29:08PM +1000 or so it is rumoured hereabouts, 
Rasjid Wilcox thought:
> 
> I think a > was lost in line wrap-around.  The original post had:
> ... >&/dev/null
> 
> which means redirect all output (both output to stdout and stderr) to 
> /dev/null.  The & in this case is not background execution, but says 'join 
> the output from stdout and stderr together'. 

Oh, I thought that was csh only.  The redirect syntax I use with bash is:

command > /dev/null 2>&1
^^^^^^^			Run this command
        ^^^^^^^^^^^	Redirect stdout to /dev/null
                    ^^^^Redirect stderr to the same place as stdout

This is _not_ the same as:

command >&/dev/null
^^^^^^^			Run this command
	^^^^^^^^^^^	Redirect both streams to /dev/null

because:

command > output.dat 2> output.err
^^^^^^^			Run this command
        ^^^^^^^^^^^	Redirect stdout to output.dat
                    ^^^^Redirect stderr to output.err

allows you to seperately capture stdout and stderr.  In csh, you can't do
this since the only option is

command >& output.both

and you end up with both stdout and stderr in the same file.  You can
seperate the streams but stderr will go to the console so you don't get to
capture it.

Conor
-- 
Conor Daly <conor.daly at oceanfree.net>

Domestic Sysadmin :-)
---------------------
Faenor.cod.ie
  3:32pm  up 53 days, 21:08,  0 users,  load average: 0.00, 0.00, 0.00
Hobbiton.cod.ie
  3:30pm  up 53 days, 21:06,  1 user,  load average: 0.02, 0.02, 0.00


More information about the Techtalk mailing list