Unix and Linux: Redirect Error Output To null Command

by on June 5, 2013 · 4 comments· LAST UPDATED June 5, 2014

in , , ,

I'm a new Linux system user. How can I redirect command error output /dev/null on a Linux or Unix-like system using Bash shell?

Your shell comes with three file descriptors as follows:

  1. stdin - 0 - Standard Input (usually keyboard or file)
  2. stdout - 1 - Standard Output (usually screen)
  3. stderr - 2 - Standard Error (usually screen)
Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsNone
Estimated completion time1m

What is a null (/dev/null) file in a Linux or Unix-like systems?

/dev/null is nothing but a special file that discards all data written to it. The length of the null device is always zero. In this example, first, send output of date command to the screen and later to the /dev/null i.e. discards date command output:

### Show on screen ###
date
 
### Discards date command output ###
date > /dev/null
 

Syntax: Standard Error (stderr -2 no) to a file or /dev/null

The syntax is as follows:

 
command 2>/dev/null
command arg1 arg2 2>/dev/null
date bar 2>/dev/null
ls -foo 2>/dev/null
 
 

In this example, send output of find command to /dev/null:
$ find /etc -type f -name '*' 2>/dev/null
The following example will cause the stderr ouput of a program to be written to a file called errors.txt:
$ find /etc/ -type f -name "*" 2> errors.txt

Linux and Unix redirect all output and error to file

The syntax is:

## send command output to output.txt and error message to error.txt ##
command > output.txt 2> error.txt
command  -arg1 -arg2 > output.txt 2> error.txt
 

If you want both stderr and stdout in same file, try:

 
command > log.txt 2>&1
 

Use cat command to display log.txt on screen:
cat log.txt

See man pages for more information - bash(1), ksh(1).

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 4 comments… read them below or add one }

1 Unix Eye December 5, 2013 at 10:35 am

How about?

command  2>&1 | tee out.txt
command opt opt2 foo 2>&1 | tee out.txt

Reply

2 Nix Craft June 5, 2014 at 10:53 am

Your command will send output to both screen and file.

Reply

3 John June 4, 2014 at 1:33 pm

Typo:
command 2>&1 > log.txt
Should be:
command > log.txt 2>&1

Reply

4 Nix Craft June 5, 2014 at 10:36 am

Thanks for the heads up!

Reply

Leave a Comment

Tagged as: , , ,

Previous Faq:

Next Faq: