In Bash, the standard error (stderr) is a file descriptor used for error output. By default, stderr is directed to the terminal along with the standard output (stdout). However, there are several ways to work with stderr in Bash:
- Redirecting stderr to a file: To redirect stderr to a file, you can use the
2>operator followed by the filename. For example:
command 2> error.log
This redirects the error output generated by
command to the file
2. Appending stderr to a file: If you want to append stderr to a file instead of overwriting it, you can use the
command 2>> error.log
This appends the error output to the existing contents of
error.log, or creates the file if it doesn’t exist.
3. Discarding stderr: If you want to discard stderr and prevent it from being displayed or stored, you can redirect it to
command 2> /dev/null
This sends the error output to the special device file
/dev/null, effectively discarding it.
4. Combining stdout and stderr: By default, both stdout and stderr are displayed on the terminal. You can use the
2>&1 operator to redirect stderr to the same destination as stdout:
command > output.txt 2>&1
This redirects both stdout and stderr to the file
5. Displaying stderr separately: If you want to display stderr separately from stdout, you can redirect stderr to the terminal while redirecting stdout to a file:
command > output.txt 2>&1 | tee error.log
This redirects stdout to
output.txt and displays stderr on the terminal using
tee, while also saving stderr to
By understanding these techniques, you can effectively manage and handle error output (stderr) in your Bash scripts, allowing you to log errors, discard them, or display them separately as needed.