'app --help' 应该转到 stdout 或 stderr?

问题描述 投票:0回答:5

我认为标准输出,这样你就可以轻松地 grep,你觉得怎么样?

shell command-line-interface stdout stderr
5个回答
13
投票

只有错误才会转到

stderr
。这绝不是一个错误,它完全符合用户的想法,即打印使用信息。


10
投票

stdout
例如,如果用户使用
--help
请求它,则可以更轻松地通过管道传输到 less、grep 等。

stderr
如果您因为出现问题而显示帮助文本,例如解析命令行参数。


9
投票

嗯,这是一个明确的帮助请求,所以它是输出。如果由于某种原因你无法输出帮助或者用户拼错了“help”,那么无论如何,将其发送到 error :-)

知道自己在做什么的用户如果希望在标准输出上出现错误,可以使用臭名昭著的

"2>&1"


1
投票

这不是一个错误,所以我会说标准输出......


0
投票

netcat是我能想到的唯一可以将 -h 重定向到 stderr 的应用程序,但我一生都无法理解为什么。

我想如果你因为有人使用了不正确的参数而输出帮助信息,你可能想将其重定向到 stderr,但就我个人而言,即使这样我也不会使用 stderr,因为我不认为用完整的帮助文本发送垃圾邮件错误日志是有用 - 我宁愿只输出一个错误,指出参数格式错误到 stderr。如果有人使用 -h 或 --help 显式调用您的应用程序,那么您确实不应该将其重定向到 stderr。

© www.soinside.com 2019 - 2024. All rights reserved.