编辑:
我想提出一个建议,即解析颜色通常是一个不明智的想法。
我想这样做的部分原因是为了能够在自己的脚本输出中解析并传递它。这样做还可以,但使用模拟终端等重新构建带有颜色的部分可能更合理!
原始问题如下。
我喜欢看到颜色,因为我的脚本足够强大(到目前为止)可以处理颜色代码。我确实感觉自己与众不同,但老实说我真的不明白为什么在脚本中需要解析转义码之类的东西会成为大问题。如果颜色对交互使用有帮助,那么在聚合数据和处理比手动处理更多数据的脚本使用中,为什么它们不能帮助呢?难道颜色不是更加重要吗?
总之,我写了一个不错的小型shell脚本来搞定git status
输出,而我只是想让这个脚本保持颜色不变。我的全局git配置设置为,在git状态中显示已更改和未跟踪的文件列表时以颜色显示。不幸的是,与git diff
不同,我找不到强制git status
显示颜色的选项。
为了非常清楚,请看下面的问题:
$ git status
产生完美的输出,但(以下是我的脚本摘录)
git status | sed "s/^#/\x1b[34m#[0m/"
不能产生有颜色的 git status
输出,可以从这里看出,我明确地将前导哈希字符转换为蓝色,因为它有助于突出显示来自我的脚本输出的不同区域。
有人知道如何使其输出彩色吗?也许有一个标准程序可以用作“虚拟终端”STDIN / STDOUT管道吗?事实上,我还在开发一个pty伪终端工具,所以我肯定可以利用它来实现此目的,但这是一种相当笨重的解决方案(而且由于我尚未完成构建,因此尚未准备好使用)。
--porcelain
选项,该选项提供了一种易于解析且在不同环境中更不易发生变化的格式。 - joeytwiddle