To redirect stdout in bash, overwriting file
cmd > file.txt
To redirect stdout in bash, appending to file
cmd >> file.txt
To redirect both stdout and stderr, overwriting
cmd &> file.txt
How do I redirect both stdout and stderr appending to file? cmd &>> file.txt
does not work for me
Source: Tips4all
cmd >>file.txt 2>&1
ReplyDeleteThere are 2 ways, depending on your Bash version.
ReplyDeleteThe classic and portable (Bash pre-4) way is:
cmd >>outfile 2>&1
A nonportable way, starting with Bash 4 is
cmd &>>outfile
(analog to &>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, in general any Bash specific code, is not the way to go.
Also remember that Bash 4 &>> is just shorter writing, it does not introduce any new functionality or similar.
Syntax is (beside other redirection syntax) described here: http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output
Please keep in mind Current ZSH 4.3.11 support
ReplyDeletecmd &>>outfile
just out of box