O'Reilly logo

bash Cookbook by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Saving Output When Redirect Doesn't Seem to Work

Problem

You tried using > but some (or all) of the output still appears on the screen.

For example, the compiler is producing some error messages.

	$ gcc bad.c
	bad.c: In function `main':
	bad.c:3: error: `bad' undeclared (first use in this function)
	bad.c:3: error: (Each undeclared identifier is reported only once
	bad.c:3: error: for each function it appears in.)
	bad.c:3: error: parse error before "c"
	$

You wanted to capture those messages, so you tried redirecting the output:

	$ gcc bad.c > save.it
	bad.c: In function `main':
	bad.c:3: error: `bad' undeclared (first use in this function)
	bad.c:3: error: (Each undeclared identifier is reported only once
	bad.c:3: error: for each function it appears in.)
	bad.c:3: error: parse error before "c"
	$

However, it doesn't seem to have redirected anything. In fact, when you examine the file into which you were directing the output, that file is empty (zero bytes long):

	$ ls -l save.it
	-rw-r--r-- 1 albing users 0 2005-11-13 15:30 save.it
	$ cat save.it
	$

Solution

Redirect the error output, as follows:

	$ gcc bad.c 2> save.it
	$

The contents of save.it are now the error messages that we had seen before.

Discussion

So what's going on here? Every process in Unix and Linux typically starts out with three open file descriptors: one for input called standard input (STDIN), one for out-put called standard output (STDOUT), and one for error messages called standard error (STDERR). It is really up to the programmer, who ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required