命令行实用程序:如何使其正确?

时间:2010-06-24 19:54:18

标签: unix command-line

我有几个问题:

  1. 如果必须向客户端显示错误 - 使用STDERR流代替STDOUT是一件好事吗?或者这是一个微不足道的问题?

  2. 我想为此实用程序的输出消息添加颜色支持。我是否必须使用一些环境容忍框架?(它可以是256色模式和“纯色”模式)。或者如何使其宽容?

  3. 我害怕为输出添加颜色,因为客户端可能会将输出重定向到日志文件。它可能因此而“破坏”任何东西吗?

  4. 请帮我在UNIX-way(Do one thing and do it well)中构建此实用程序。

2 个答案:

答案 0 :(得分:5)

由于几个原因,STDERR比STDOUT更好地出错。重定向输出不会隐藏您的错误。您可以防止警告与输出混合,这使得在某些情况下更容易解析/处理。

您可能需要查看应该支持ANSI颜色集的curses库。

ls这样的工具会检测他们的输出是否被重定向并删除颜色代码,以便日志文件等不会被篡改。你也应该这样做。

答案 1 :(得分:3)

使用STDERR。至于颜色,可以通过在打印颜色之前检查输出是否为tty来减轻您的顾虑。在初始化期间,进行检查以启用或禁用颜色。拥有--color=[on|off|auto]标志也是一种好习惯,用户可以通过该标志明确选择一个标志。