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:
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.
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.
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
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.