我正在寻找一种确定的方式来构建生成彩色输出的 shell 脚本。
不幸的是,我很难找到合适的库或这样做的好技术。我发现了很多有用但简单的例子,比如 这样。到目前为止,我发现的最全面的指南也是 这个。
在我开始编写自己的库之前,我想检查是否有人已经编写了它
如果您的解决方案不符合下面的观察结果,那不是问题。我也想阅读它,如果决定编写自己的解决方案,它可以帮助我
我的主要担忧/观察:
- 需要安全。想要避免垃圾输出,因为并非所有终端或寻呼机/编辑器(如 less、more、vim 等)都支持彩色输出或更多样式的输出(粗体、闪烁、斜体等)
- 需要简单易读。直接使用 ANSI 转义码 太可怕了:
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
- 需要让我访问整个调色板以及前景和背景文本的样式。我发现的大多数示例仅使用前景文本的基本颜色。
- 最好只使用简单的命令,如 bash 或更简单的内置命令和/或可以在大多数操作系统上找到的常用命令的 shell。例如,我可以使用 colorize ,但我需要 ruby(这有点好)并安装了 colorize gem(不好)
- Tput 似乎是一个不错的选择,因为它可以很好地操纵 shell 光标,但它有点简单/不太灵活
编辑
在对终端控制和输出格式进行了一些研究之后,我正在写 这篇 文章试图实现这一点。到目前为止,它做得很好
原文由 Bruno Penteado 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的 dotfiles 中的一个修改片段,应该做你想做的
然后你就可以
echo -e "${Blu}blue ${Red}red ${RCol}etc...."