shell “app --help”应该转到stdout还是stderr?

esyap4oy  于 2023-10-23  发布在  Shell
关注(0)|答案(5)|浏览(152)

我认为stdout,所以你可以很容易地grep,你觉得呢?

2ekbmq32

2ekbmq321#

stdout如果用户使用--help请求它,例如,使其更容易管道到less,grep it等。
stderr如果您显示帮助文本是因为出现了问题,例如:解析命令行参数。

nqwrtyyt

nqwrtyyt2#

好吧,这是一个明确的帮助请求,所以它应该输出。
如果由于某种原因,你不能输出帮助,或者用户拼错了“help”,那么无论如何,把它发送到 *error *,因为这将是诊断信息。
如果用户希望在标准输出中出现错误,他们可以使用臭名昭著的"2>&1"

cxfofazt

cxfofazt3#

只有错误才会转到stderr。这绝不是一个错误,它做的正是用户所想的,这是打印使用信息。

plicqrtu

plicqrtu4#

这不是一个错误,所以我会说stdout。

8ulbf1ek

8ulbf1ek5#

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

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

相关问题