1

У меня есть следующий псевдоним:

alias mca_color='nawk '"'"'BEGIN { arr["Creating shared object"] = "1;31";} \
{ l = $0; for (pattern in arr) \
{ gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"

Я использую аналогичные псевдонимы для окрашивания других выходов (используя больше шаблонов, но это только для примера).

Итак, этот псевдоним работает, если я использую его следующим образом:

$ echo "-ne Creating shared object test.so ..." | mca_color

echo напечатано красным. НО, когда я пытаюсь:

$ make | mca_color

и даже

$ make 2>&1 | mca_color

результат не окрашен (и да, make выполняет "печать" того же текста в конце, если его выполнение).

Есть идеи?


Я думал, что может быть что-то с дочерними процессами или что-то, но, очевидно, труба работает - попробовал это с grep , попытался перенаправить вывод в файл, все работает.

Даже это не работает (текст печатается, но не цветной):

$ make 2>&1 | grep 'a' | mca_color

1 ответ1

0

Я наконец понял это, почти случайно.

Оказалось, что существует еще один alias make='colormake' а colormake - это скрипт, содержащий:

/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl

что многое объясняет. Удаление alias для colormake "проблему".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .