我认为标准输出,这样你就可以轻松地 grep,你觉得怎么样?
只有错误才会转到
stderr
。这绝不是一个错误,它完全符合用户的想法,即打印使用信息。
stdout
例如,如果用户使用 --help
请求它,则可以更轻松地通过管道传输到 less、grep 等。
stderr
如果您因为出现问题而显示帮助文本,例如解析命令行参数。
嗯,这是一个明确的帮助请求,所以它是输出。如果由于某种原因你无法输出帮助或者用户拼错了“help”,那么无论如何,将其发送到 error :-)
知道自己在做什么的用户如果希望在标准输出上出现错误,可以使用臭名昭著的
"2>&1"
。
这不是一个错误,所以我会说标准输出......
netcat是我能想到的唯一可以将 -h 重定向到 stderr 的应用程序,但我一生都无法理解为什么。
我想如果你因为有人使用了不正确的参数而输出帮助信息,你可能想将其重定向到 stderr,但就我个人而言,即使这样我也不会使用 stderr,因为我不认为用完整的帮助文本发送垃圾邮件错误日志是有用 - 我宁愿只输出一个错误,指出参数格式错误到 stderr。如果有人使用 -h 或 --help 显式调用您的应用程序,那么您确实不应该将其重定向到 stderr。