2>&1
redirect в оболочке Bourne выводит результат, отправленный в дескриптор файла 2 (по умолчанию, стандартную ошибку) и отправляет его вместо этого в файл дескриптор 1 (по умолчанию стандартный вывод).
Но что делает перенаправление 2<&1
?
Он отправляет stderr в stdin?
Моя теория заключалась в том, что она отправляла stdin в stderr (например, такой же, как 1>&2
), но экспериментально, это не так:
$ perl -e 'print "OUT\n"; print STDERR "ERR\n"; \
while (<>) { print "IN WAS $_\n";}' \
> out3 2<&1
df
$ cat out3
ERR
OUT
IN WAS df
Обратите внимание, что стандартная ошибка и стандартная ошибка обоих отправились в файл out3, где stdout был перенаправлен.