Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Redirect stderr and not stdout?

6 views
Skip to first unread message

Andrew Lee

unread,
Feb 5, 1997, 3:00:00 AM2/5/97
to

Is it possible to redirect stderr and not stdout?

Thanks.

Andrew

Tony Porczyk

unread,
Feb 5, 1997, 3:00:00 AM2/5/97
to

kl...@hmc.edu (Andrew Lee) writes:

>Is it possible to redirect stderr and not stdout?

Your fingerd does not show which shell you are using, so I can only
advise you to use an sh-like shell (sh, ksh, bash, etc), not the
csh-like shell (csh, tcsh). Try "man ksh" or "man bash" or "man sh".
There should be examples on how to do it.

t.
---------------------------------------------------------------------------
Tony Porczyk * tpor...@infobound.com * San Jose, California
GIT/ED d++$(!d) s++:++ a? C++++ USLB++++$ P+ E--- W(--) N++ !k w-- M- V? b-
PS+++@ PE++ O X-- Y++@ PGP-- t+@ 5++ R* D---- e* V-- h* y** r+++(*)+++(*)>?
---------------------------------------------------------------------------

Pete Houston

unread,
Feb 6, 1997, 3:00:00 AM2/6/97
to

Andrew Lee <kl...@hmc.edu> wrote in comp.unix.shell:
#Is it possible to redirect stderr and not stdout?

Yes. To send stderr to file log and not stdout do

foo 2> log

where foo is your command producing output & error. Naturally this will
will not work for csh-type shells.

Pete


Brian S Hiles

unread,
Feb 6, 1997, 3:00:00 AM2/6/97
to

Andrew Lee (kl...@hmc.edu) wrote:
: Is it possible to redirect stderr and not stdout?
: Andrew

in t/csh: from "Csh Programming Considered Harmful" by Tom Christensen:

1. FILE DESCRIPTORS

The most common problem encountered in csh programming is that
you can't do file-descriptor manipulation. All you are able to
do is redirect stdin, or stdout, or dup stderr into stdout.
Bourne-compatible shells offer you an abundance of more exotic
possibilities.

1a. Writing Files

In the Bourne shell, you can open or dup arbitrary file descriptors.
For example,

exec 2>errs.out

means that from then on, stderr goes into errs file.

Or what if you just want to throw away stderr and leave stdout
alone? Pretty simple operation, eh?

cmd 2>/dev/null

Works in the Bourne shell. In the csh, you can only make a pitiful
attempt like this:

(cmd > /dev/tty) >& /dev/null

But who said that stdout was my tty? So it's wrong. This simple
operation *CANNOT BE DONE* in the csh.


Along these same lines, you can't direct error messages in csh scripts
out stderr as is considered proper. In the Bourne shell, you might say:

echo "$0: cannot find $file" 1>&2

but in the csh, you can't redirect stdout out stderr, so you end
up doing something silly like this:

sh -c 'echo "$0: cannot find $file" 1>&2'
--

In k/sh or bash:

command 2>file.stderr

"2" means file descriptor two (well, acually: _file unit number_ two) which
refers to standard error.

-Brian
--
,---. ,---. ,---. ,---. ,---. ,---. ,---.
/ _ \ / _ \ / _ \ / _ \ / _ \ / _ \ / _ \
.' / \ `.' / mailto:bsh2...@challenger.atc.fhda.edu \ `.' / \ `.
__,' `.___,' `.___,' `.___,' `.___,' `.___,' `.___,' `.__

Stewart Ravenhall

unread,
Feb 13, 1997, 3:00:00 AM2/13/97
to

Tony Porczyk <tpor...@best.com> wrote in article
<tporczyk.855186497@shellx>...

> kl...@hmc.edu (Andrew Lee) writes:
>
> >Is it possible to redirect stderr and not stdout?
>
> Your fingerd does not show which shell you are using, so I can only
> advise you to use an sh-like shell (sh, ksh, bash, etc), not the
> csh-like shell (csh, tcsh).

If you are using csh you can redirect stderr and stdout to different places
using
(command > outfile) >& errorfile

But (as Tony pointed out) using other shells is better!

Cheers,
Stewart.

0 new messages