我有几个问题:
如果必须向客户端显示错误 - 使用STDERR流代替STDOUT是一件好事吗?或者这是一个微不足道的问题?
我想为此实用程序的输出消息添加颜色支持。我是否必须使用一些环境容忍框架?(它可以是256色模式和“纯色”模式)。或者如何使其宽容?
我害怕为输出添加颜色,因为客户端可能会将输出重定向到日志文件。它可能因此而“破坏”任何东西吗?
请帮我在UNIX-way(Do one thing and do it well)
中构建此实用程序。
答案 0 :(得分:5)
由于几个原因,STDERR比STDOUT更好地出错。重定向输出不会隐藏您的错误。您可以防止警告与输出混合,这使得在某些情况下更容易解析/处理。
您可能需要查看应该支持ANSI颜色集的curses库。
像ls
这样的工具会检测他们的输出是否被重定向并删除颜色代码,以便日志文件等不会被篡改。你也应该这样做。
答案 1 :(得分:3)
使用STDERR。至于颜色,可以通过在打印颜色之前检查输出是否为tty来减轻您的顾虑。在初始化期间,进行检查以启用或禁用颜色。拥有--color=[on|off|auto]
标志也是一种好习惯,用户可以通过该标志明确选择一个标志。