【发布时间】:2013-05-26 10:54:16
【问题描述】:
我正在寻找一种确定的方法来构建生成彩色输出的 shell 脚本。
不幸的是,我很难找到合适的库或很好的技术来做到这一点。我发现了很多有用但简单的例子,比如this。到目前为止,我发现的最全面的指南也是this one。
在我开始编写自己的库之前,我想检查一下是否有人已经编写了它
如果您的解决方案不符合以下观察结果,那不是问题。我也想阅读它,以便在决定编写自己的解决方案时帮助我
我的主要担忧/观察:
- 需要安全。想要避免垃圾输出,因为并非所有终端或寻呼机/编辑器(如 less、more、vim 等)都支持彩色输出或更多样式输出(粗体、闪烁、斜体等)
-
需要简单易读。直接使用ANSI escape codes 太可怕了:
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m' - 需要让我访问前景和背景文本的整个调色板和样式。我发现的大多数示例仅使用前景文本的基本颜色。
- 最好只使用简单的命令,例如 bash 或更简单的内置命令和/或可以在大多数操作系统上找到的常用命令的 shell。例如,我可以使用colorize,但我需要 ruby(这还可以)并安装 colorize gem(不行)
- Tput 似乎是一个不错的选择,因为它可以很好地操纵 shell 光标,但它有点简单/不太灵活
编辑
在对终端控制和输出格式进行了一些研究之后,我正在写 this gist 来尝试实现这一点。到目前为止,它做得很好
【问题讨论】:
-
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'并没有那么可怕,当您使用RED=\033[32m之类的变量甚至是颜色数组时。 -
确实如此。我想写一个更高级的库,但可能会坚持格式化字符串中的变量