编辑:
我想提出一个建议,即解析颜色通常是一个考虑不周的想法。
我想要它的部分原因是我可以解析它并在我自己的脚本输出中传递它。这……好吧,但使用瓷器或类似的东西并自己重新制作彩色零件可能会更明智!
原始问题如下。
我喜欢看颜色,因为我的脚本足够强大(到目前为止)可以处理颜色代码。看起来我在这里违背了规律,但老实说,我不明白必须解析脚本中的转义码之类的东西有什么大不了的。如果颜色有助于交互式使用,为什么它们不能帮助脚本使用,我可能会聚合数据并处理比手动更多的数据?颜色不是更重要吗?
无论如何,我有一个整洁的小 shell 脚本,我编写了 mungesgit status
输出,我只是想让这个脚本保持颜色完整。我的全局 git 配置已设置,以便更改和未跟踪文件的列表在 git 状态中以颜色显示。不幸的是,我找不到git diff
强制颜色的选项。git status
说得很清楚,这就是问题所在:
$ git status
产生完美的输出,但是(摘自我的脚本如下)
git status | sed "s/^#/\x1b[34m#[0m/"
不产生彩色git status
输出,您甚至可以在这里看到我明确地将前导哈希字符转换为蓝色,因为它有助于突出显示脚本中不同的输出区域。
有谁知道如何让它熄灭颜色?是否有可以用作“假终端”STDIN/STDOUT 管道的标准程序?事实上,我也在开发一个 pty 伪终端工具,所以我当然可以为此目的使用它,但它是一个相当笨拙的解决方案(并且还没有准备好使用,因为我还没有完成构建它)。