Monday 12 November 2018

linux - How to redirect and append both stdout and stderr to a file with Bash?

There are two ways to do this, depending on your Bash version.



The 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, 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

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...