2>&1 redirects standard error (file handle 2) to the same file that standard output (file handle 1) is currently going to.
It’s also a position-dependent thing so:
prog >x 2>&1 >y
will actually send standard error to x and standard output to y as follows:
- Connect standard output to
x; - Then connect standard error to same as current standard output, which is
x; - Then connect standard output to
y;