Из того, что я понимаю, 2>&1
просто означает «отправить stderr в то же место, что и stdout».Но по какой-то причине 1>foo 2>foo
и 1>foo 2>&1
не кажутся эквивалентными.
# Assuming file 'out' exists but file 'nosuchfile' doesn't
# 'foo' contains stdout and some partial stderr in CentOS 6
$ ls -l out nosuchfile 1>foo 2>foo
$ cat foo
-rw-r--r-- 1 user user 0 May 14 14:45 out
ctory
# 'foo' contains both stdout and stderr
$ ls -l out nosuchfile 1>foo 2>&1
$ cat foo
ls: cannot access nosuchfile: No such file or directory
-rw-r--r-- 1 user user 0 May 14 14:45 out
Может кто-нибудь объяснить, почему они ведут себя по-разному?