Tengo el siguiente alias:
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; }'"'"
Utilizo alias similares para colorear otras salidas (usando más patrones, pero esto es sólo por ejemplo).
Entonces, este alias funciona si lo uso como:
$ echo "-ne Creating shared object test.so ..." | mca_color
está echo
impreso en rojo.PERO, cuando intento:
$ make | mca_color
e incluso
$ make 2>&1 | mca_color
el resultado esnocoloreado (y sí, make
"imprime" el mismo texto al final de su ejecución).
¿Algunas ideas?
Pensé que podría haber algo con procesos secundarios o algo así, pero obviamente la tubería funciona: lo probé con grep
, intenté redirigir la salida a un archivo, todo funciona.
Incluso esto no funciona (el texto está impreso, pero no coloreado):
$ make 2>&1 | grep 'a' | mca_color
Respuesta1
Finalmente lo descubrí, casi accidentalmente.
Parecía que había otro alias make='colormake'
y colormake
es un guión que contiene:
/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl
lo que explica mucho. Quitar el alias
for colormake
solucionó el "problema".