Any command executed in Bash or any other Linux shell, has one input stream (stdin
) and two kinds of output streams: standard output (stdout
) and standard error (stderr
).
Each of these streams is represented by a numeric file descriptor:
0
–stdin
, the standard input stream1
–stdout
, the standard output stream2
–stderr
, the standard error stream
There is an advantage in separating the stdout
and stderr
streams, as it allows to redirect/pipe a command’s output (stdout
) to a file or anther command and still see any error messages (stderr
) in the terminal.
But sometimes it is required to redirect the stderr
stream to stdout
or redirect the both stderr
and stdout
to a file or to /dev/null
and in this note i am showing how to do this.
Redirect stderr
to stdout
Redirect stderr
to stdout
:
$ <command> 2>&1
Redirect stderr
and stdout
to a file:
$ <command> 2>&1 > <file>
Redirect stderr
and stdout
to /dev/null
:
$ <command> > /dev/null 2>&1
- or -
$ <command> &>/dev/null