×


Redirect Stderr to Stdout in Bash - How to get it done ?

When sending the result of a command to a file or another command, maybe you will see error messages notifications are displayed on the screen.

In Bash and other Linux shells, there are 3 standard I/O streams. Each stream has a different numeric id:

  • 0 – stdin: input stream.
  • 1- stdout: output stream.
  • 2 – stderr: error stream.

Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related bash and Linux shells queries.

In this context, we shall look into how to redirect stderr to stdout in Bash.


How to redirect output in Linux ?

Redirect is the way to know the output from one program in advance and send the result of a command to a file or another command.

The syntax for Redirect is given below:

$ command n> file

n: numeric id of stream

If the command is without n, the default will be 1- stdout.

For example, I want to send ls's output to ls.txt file:

$ ls > ls.txt

Then I use the cat command to check the output:

$ cat ls.txt

We can combine 1- stdout with 2 – stderr:

$ command 1> file 2> file

For example:

$ ls /home 1> stdout.txt cat big.txt 2> stderr.txt

Using the cat command to check:

$ cat stdout.txt
$ cat stderr.txt

You can get an error message when big.txt file does not exist.


How to Redirect stderr to stdout ?

The syntax to implement this is given below:

$ command > file 2>&1

You can also use the below command:

$ command &> file

In Bash, &> is used to replace for 2>&1:

For example, I will send cat big.txt's error to the error.txt file:

$ cat big.txt > error.txt 2>&1

Using the cat command to check:

$ cat error.txt


[Need assistance in fixing Linux System Software Installation issues? We can help you. ]


Conclusion

This article covers how to redirect stderr to stdout in Bash. When redirecting the output of a command to a file or piping it to another command, you might notice that the error messages are printed on the screen. In Bash and other Linux shells, when a program is executed, it uses three standard I/O streams. Here, A file descriptor is just a number representing an open file. The input stream provides information to the program, generally by typing in the keyboard. The program output goes to the standard input stream and the error messages goes to the standard error stream. By default, both input and error streams are printed on the screen.