Linux Redirect Error Output To File

by on June 23, 2014 · 6 comments· LAST UPDATED June 23, 2014

in , ,

I am a new Ubuntu Linux and bash shell user. I also know how to redirect output from display/screen to a file using the following syntax:

cmd > file
ls > file

However, some time errors are displayed on screen. How do I store and redirect output from the computer screen to a file on a Linux or Unix-like systems?

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Estimated completion time2m
Bash / ksh and other modern shell on Linux has three file descriptors:

  1. stdin (0)
  2. stdout (1)
  3. stderr (2)

Syntax To redirect all output to file

The syntax is as follows to redirect output (stdout) as follows:

command-name >  output.txt
command-name >  stdout.txt

Syntax To redirect all error to file

The syntax is as follows to redirect errors (stderr) as follows:

command-name 2> errors.txt
command-name 2> stderr.txt

Syntax to redirect both output (stdout) and errors (stderr) to different files

The syntax:

command1 > out.txt 2> err.txt
command2 -f -z -y > out.txt 2> err.txt

Syntax to redirect both output (stdout) and errors (stderr) to same file

The syntax is:

command1 > everything.txt 2>&1
command1 -arg > everything.txt 2>&1

Syntax to redirect errors (stderr) to null or zero devices

Data written to a null or zero special file is discarded by your system. This is useful to silence out errors (also know as 'error spam'):

command1 2> /dev/null
command1 2> /dev/zero
command2 -arg 2> /dev/null
command2 -arg 2> /dev/zero

Tip: Use tee command to redirect to both a file and the screen same time

The syntax is:

command1 |& tee log.txt
## or ##
command1 -arg |& tee log.txt
## or ##
command1 2>&1 | tee log.txt

Another usage:

# My script to do blah ...
} 2>&1 | tee foo.log


# My script to do blah ...
} 2>&1 | tee script.log
Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 6 comments… read them below or add one }

1 Andrey Oliveira June 23, 2014 at 12:15 pm

In newer versions of bash and sh, for “Syntax to redirect both output (stdout) and errors (stderr) to same file” you can also use:

command1 &> everything.txt


2 Dexter November 26, 2014 at 5:20 am

That good ways…


3 Philippe Petrinko June 24, 2014 at 8:07 am

Dear NixCraft (or Vivek?)

You may consider to explain a bit more [tee] command.

1) It can output to more than one file
2) It can overwrite files, but also append to files
3) It can even ignore interrupts.

— Philippe


4 Jalal Hajigholamali June 24, 2014 at 8:32 am


Thanks a lot
useful article…


5 Unni August 22, 2014 at 1:27 pm

is it possible to APPEND stdout and stderr to a file while printing to screen at the same time using TEE command.


6 xuhui November 24, 2014 at 1:19 pm

Useful for me!!!!


Leave a Comment

Tagged as:

Previous Faq:

Next Faq: