Меняет ли color_producing_script
свое поведение при использовании в трубе? Попробуйте
color_producing_script | cat
в командной строке. Может иметь опцию принудительного вывода цвета, даже если это так.
Скрипт Perl, colorgcc
, специально проверяет, является ли вывод не-tty, и пропускает раскраску, если это так.
# Get the terminal type.
$terminal = $ENV{"TERM"} || "dumb";
# If it's in the list of terminal types not to color, or if
# we're writing to something that's not a tty, don't do color.
if (! -t STDOUT || $nocolor{$terminal})
{
exec $compiler, @ARGV
or die("Couldn't exec");
}
Edit:
Вы можете изменить скрипт одним или несколькими из следующих способов:
- закомментируйте тест и сделайте так, чтобы он всегда выводил цвет
- добавить функциональность для поддержки чтения переменной среды, которая устанавливает, следует ли раскрашивать
- добавить функциональность для поддержки опции всегда цвета в файле конфигурации
~/.colorgccrc
- добавить функциональность для поддержки опции командной строки всегда цвета, которую вы удаляете перед передачей остальных опций компилятору
Вы также можете использовать сценарий expect
unbuffer
для создания псевдо-tty, подобного этому:
unbuffer gcc file.c | cat
(где cat
- обычный получатель).
Все это основано на использовании colorgcc
из командной строки. В скрипте Perl должны быть аналоги для подобных действий.