Monday, January 29, 2018

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



To redirect stdout to a truncated file in Bash, I know to use:



cmd > file.txt


To redirect stdout in Bash, appending to a file, I know to use:



cmd >> file.txt


To redirect both stdout and stderr to a truncated file, I know to use:



cmd &> file.txt


How do I redirect both stdout and stderr appending to a file? cmd &>> file.txt did not work for me.


Answer



cmd >>file.txt 2>&1


Bash executes the redirects from left to right as follows:




  1. >>file.txt: Open file.txt in append mode and redirect stdout there.

  2. 2>&1: Redirect stderr to "where stdout is currently going". In this case, that is a file opened in append mode. In other words, the &1 reuses the file descriptor which stdout currently uses.


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...