'nawk' “não funciona” com 'make'? Por quê?

1

Eu tenho o seguinte apelido:

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

Eu uso aliases semelhantes para colorir outras saídas (usando mais padrões, mas isso é apenas por exemplo).

Então, esse alias funciona, se eu usá-lo como:

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

o echo é impresso em vermelho. MAS , quando tento:

$ make | mca_color

e até mesmo

$ make 2>&1 | mca_color

o resultado é não colorido (e sim, make "imprime" o mesmo texto no final se sua execução).

Alguma idéia?

Eu pensei que poderia haver algo com processos filho ou algo assim, mas obviamente o pipe funciona - tentei com grep , tentei redirecionar a saída para um arquivo, tudo funciona.

Mesmo isso não funciona (o texto é impresso, mas não colorido):

$ make 2>&1 | grep 'a' | mca_color
    
por Kiril Kirov 28.11.2013 / 16:38

1 resposta

0

Eu finalmente percebi isso quase que acidentalmente.

Apareceu que havia outro alias make='colormake' e colormake é um script contendo:

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

que explica muito. Remover o alias para colormake corrigiu o "problema".

    
por 14.01.2014 / 13:58