Почему в stderr нет сообщения «Отказано в доступе»?

Почему в stderr нет сообщения «Отказано в доступе»?

У меня есть команда: mywritercmd -f /tmp/test 2>&1 > log.txtЯ запускаю в терминале bash, команда возвращаетerror: could not open output file "/tmp/test": Permission denied

Тем не менее, это сообщение об ошибке не написано вжурнал.txtфайл, он остается пустым...

Почему?

Я бы предположил, что это сообщение должно попасть в stderr, а затем в файл, но почему-то этого не происходит.

решение1

Разница обусловлена ​​порядком. Командная строка оценивается слева направо. Когда она достигает 2>&1, инструкция заключается в том, чтобы доставить stderr туда, куда направляется stdout. На этом этапе часть > log.txtеще не оценена. В результате stderr остается по умолчанию, то есть выводить на терминал.

mywritercmd -f /tmp/test > log.txt 2>&1приведет к желаемому поведению и запишет сообщение об ошибке в файл log.txt.

Связанный контент