So che programmi di utilità ben educati come grep generano messaggi "normali" su stdout e messaggi di errore su stderr.
$ grep '^foo' file1 file2
file1:foo
grep: file2: No such file or directory
Quando scrivo da solo gli script di shell, trovo spesso difficile decidere quale output e quali messaggi dovrei presentare su stderr o se dovrei preoccuparmi affatto.
Mi piacerebbe conoscere le buone pratiche: quando è necessario e ragionevole reindirizzare un messaggio a stderr e quando no?
"Dipende", certo, ma hai qualche idea che mi aiuterebbe a prendere queste decisioni?
Al fine di adattare questa domanda soggettiva al formato, vorrei incoraggiare le risposte che affrontano il "perché" e sono informate dall'esperienza e, se possibile, supportate da fatti.