To redirect stdout to a truncated file in Bash:
cmd > file.txt
To redirect stdout in Bash, appending to a file:
cmd >> file.txt
To redirect both stdout and stderr to a truncated file:
cmd &> file.txt
There are two ways to stdout and stderr appending to a file, depending on your Bash version.
The classic and portable (Bash pre-4) way is:
cmd >> outfile 2>&1
cmd >> outfile 2>>log_error.out
A nonportable way, starting with Bash 4 is
cmd &>> outfile
For good coding style, you should
- decide if portability is a concern (then use classic way)
- decide if portability even to Bash pre-4 is a concern (then use classic way)
- no matter which syntax you use, not change it within the same script (confusion!)
If your script already starts with
#!/bin/sh (no matter if intended or not), then the Bash 4 solution, and in general any Bash-specific code, is not the way to go.
Also remember that Bash 4
&>> is just shorter syntax — it does not introduce any new functionality or anything like that.
The syntax is (beside other redirection syntax) described here: http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output