Unix Power ToolsUnix Power ToolsSearch this book

43.5. Redirection in C Shell: Capture Errors, Too?

The > (right angle bracket) operator redirects the standard output of a process to a file. It doesn't affect the standard error. If you're logged in and can see any messages written to standard error, that's okay:

% nroff -ms report.ms > report.out &
[1] 10316
   ...Later...
nroff: can't open file /hoem/jpeek/report.data

But if you log out and leave the job running, you'll never see those errors unless you use the csh operator >&. It redirects both standard output and standard error to a file. For example:

make Section 11.10

% make >& make.output &
[1] 10329
% logout
   ...Later...
% cat make.output
        cc -O -c random.c
        cc -O -c output.c
"output.c", line 46: syntax error
"output.c", line 50: time_e undefined
"output.c", line 50: syntax error
   ...

You might also use the >& operator while you're logged in and watch the output file with tail -f (Section 12.10). If you don't want the errors mixed with other output, you can split them to two files; see Section 43.1.

The C shell also has a pipe operator, |&, that redirects both standard output and standard error. It's great for running a job in the background or on another computer and mailing (Section 1.21) any output to me:

% make |& mailx -s "'make bigprog' output" jpeek@jpeek.com &
[1] 29182 29183

If I'd used plain | instead of |&, any text on the standard error wouldn't go into the mail message.

-- JP



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.