如果使用信息打印有例如
command -?
Unix 命令的命令转到 stderr 或 stdout,为什么?如果用户在选项上犯了错误,它是否应该转到同一个地方?
答案1
它应该转到标准输出,因此您可以输入:
command --help | less
这也是小编推荐的Gnu 编码标准--help
。
另一方面,当您使用无效选项或省略必需参数时收到的使用消息应该发送到 stderr,因为它是一条错误消息,并且您不希望将其输入管道中的下一个命令。
当您使用 时--help
,用法消息是命令的正常预期输出。因此,它会转到标准输出,因此可以通过管道传输到另一个命令,例如less
or grep
。
当您说 时command --bogus-option | other-command
,您不希望使用消息发送到标准输出,因为它现在是意外输出,不应由 处理other-command
。此外,如果 的输出--help
超过几行,则使用错误消息应仅包含输出摘要--help
,并提示用户了解--help
其他详细信息。