Я знаю, что хорошо работающие утилиты, такие как grep, выводят «нормальные» сообщения в stdout и сообщения об ошибках в stderr.
$ grep '^foo' file1 file2
file1:foo
grep: file2: No such file or directory
Когда я пишу сценарии оболочки самостоятельно, мне часто бывает трудно решить, какой вывод и какие сообщения я должен представлять на stderr, или мне вообще стоит беспокоиться.
Я хотел бы знать о передовой практике: когда перенаправление некоторого сообщения в stderr требуется и разумно, а когда нет?
«Это зависит», конечно, но есть ли у вас какие-то идеи, которые помогут мне принять эти решения?
Чтобы этот субъективный вопрос соответствовал формату, я хотел бы предложить ответы, которые касаются «почему» и основаны на опыте и, если возможно, подкреплены фактами.