stdout to file.txt:
echo test > file.txt
This is equivalent to:
echo test 1> file.txt
stderr to file.txt:
echo test 2> file.txt
echo test > file.txt 2>&1
Here in 2>&1:
- 2> redirects stderr to an (unspecified) file.
- &1 redirects stderr to stdout.
So >& is the syntax to redirect a stream to another file descriptor:
- 0 is stdin
- 1 is stdout
- 2 is stderr
Thus, To redirect stdout to stderr:
echo test 1>&2 # equivalently, echo test >&2
echo test 2>&1 >>file !=
echo test >>file 2>&1
2>&1 >>file does not redirect stderr to the file,
but cmd >> file 2>&1 does.
In the first case, stderr is redirected to the stdout of the shell and then stdout is directed to the file.
In the second case, stdout is directed to the file, and then stderr is directed to the same place.
If you think this is helpful 🎈
Don't keep it to yourself 🙊
Share it with your lovely followers at twitter 🗽