使用消息应该发送到 stderr 还是 stdout?

使用消息应该发送到 stderr 还是 stdout?

如果使用信息打印有例如

 command -?

Unix 命令的命令转到 stderr 或 stdout,为什么?如果用户在选项上犯了错误,它是否应该转到同一个地方?

答案1

它应该转到标准输出,因此您可以输入:

command --help | less

这也是小编推荐的Gnu 编码标准--help

另一方面,当您使用无效选项或省略必需参数时收到的使用消息应该发送到 stderr,因为它是一条错误消息,并且您不希望将其输入管道中的下一个命令。

当您使用 时--help,用法消息是命令的正常预期输出。因此,它会转到标准输出,因此可以通过管道传输到另一个命令,例如lessor grep

当您说 时command --bogus-option | other-command,您不希望使用消息发送到标准输出,因为它现在是意外输出,不应由 处理other-command。此外,如果 的输出--help超过几行,则使用错误消息应仅包含输出摘要--help,并提示用户了解--help其他详细信息。

相关内容