【发布时间】:2011-07-01 16:18:41
【问题描述】:
我正在尝试编写一个 perl 脚本,它获取 colorgcc 的输出(或任何其他将彩色文本打印到终端的脚本),添加/删除部分字符串,然后以 相同的方式打印结果 颜色作为输入字符串。
以下代码将在 color_produce_script 生成的每一行前面打印“Hello World”。输出将是全黑的,而输入是多色的。如何修改此脚本以保留原始颜色?
open(CMD, "color_producing_script |");
while(<CMD>) {
print 'Hello World' . $_;
}
我正在使用 bash 终端。
编辑
根据出色的第一条评论,这本身不是 Perl 问题。只需运行color_producing_script | cat 就会去掉颜色。所以这个问题可以改写为“你如何强制颜色通过管道?”
编辑 2
看起来最新版本的gcc(1.3.2)在if子句中包含了CGCC_FORCE_COLOR环境变量,如果定义了,colorgcc强制颜色:
export CGCC_FORCE_COLOR=true
【问题讨论】:
-
它不会剥离颜色;脚本在通过管道时不会产生颜色。
标签: perl bash colors terminal pipe