编辑:
我想建议解析颜色是一个普遍错误的想法.
我想要它的部分原因是我可以解析它并在我自己的脚本输出中传递它.这是......好吧,但是使用瓷器或其他一些东西可能更安全,并自己重新制作彩色部件!
原始答案如下.
我喜欢看颜色,因为我的脚本足够强大(到目前为止)处理颜色代码.看起来我确实反对这里,但老实说,我不知道在脚本中解析转义代码之类的东西是多么重要.如果颜色有助于交互式使用,为什么它们不会帮助我使用脚本,我可能会聚合数据并处理比我手动更多的数据?颜色不是更重要吗?
无论如何,我有一个简洁的小shell脚本我写的munges git status输出,我只是想让这个脚本保持颜色完好无损.我的全局git配置已设置,以便更改和未跟踪文件的列表在git状态中显示为彩色.不幸的git diff是git status,我没有找到强制颜色的选项.
非常清楚,这就是问题所在:
$ git status
Run Code Online (Sandbox Code Playgroud)
产生完美的输出,但(摘自我的脚本如下)
git status | sed "s/^#/\x1b[34m#[0m/"
Run Code Online (Sandbox Code Playgroud)
不产生彩色git status输出,你甚至可以看到我明确地将前导哈希字符转换为蓝色,因为它有助于突出显示我脚本输出的不同区域.
有谁知道如何让它褪色?是否有可以使用的标准程序可以用作"假终端"STDIN/STDOUT管道?我实际上也在研究一个pty伪终端工具,所以我当然可以为此目的使用它,但它是一个相当苛刻的解决方案(并没有准备好使用,因为我还没有完成构建它).
我们为cmd构建了脚本.例如,这里是其中一个的输出.

当我在PS中运行相同的命令时,它会以红色输出所有内容(可能是因为它是错误的输出).

我能以某种方式保留颜色吗?