
나는 다음과 같은 별칭을 가지고 있습니다 :
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
마침내 나는 거의 우연히 그것을 알아냈습니다.
다른 것이 있는 것으로 나타났 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