터미널에 색상을 올바르게 표시하려면 gcc 파이프를 줄이십시오.

터미널에 색상을 올바르게 표시하려면 gcc 파이프를 줄이십시오.

나는 gcc를 사용하여 파일을 컴파일하고 있는데(실제로 만들고 있지만 신경 쓰지 마세요) stderr에 몇 가지 색상의 오류 메시지를 보냅니다. 그래서 저는 이렇게 합니다:

gcc a.c 2>&1 | less

하지만 내가 얻는 것은 다음과 같습니다.

a.c: In function <E2><80><98>whatever(int)<E2><80><99>:
a.c:11:10: warning: etc etc

즉, 색상 대신 숫자 이스케이프 코드가 표시됩니다.

나는이 답변SU에서는 작동하지 않습니다. 아니면 오히려 ls --color | less그렇습니다. 하지만 위의 gcc 명령은 아닙니다. 어떻게 해야 합니까?

노트:

  • SSH를 통해 이 컴퓨터에 연결했습니다.TERM=xterm-256color
  • 파이프를 사용하지 않고도 less터미널에서 색상을 얻을 수 있습니다 .

답변1

요청에 따라 답변으로 게시되었습니다.

여기에는 두 가지 질문이 있습니다.

  • 기본적으로 gcc색상 코드는 출력이 터미널에 있을 때만 인쇄됩니다.
  • 기본적으로 less원시 색상 문자는 터미널로 전송되지 않습니다.

gcc옵션을 전달하여 색상 코드를 강제로 인쇄 할 수 있습니다 -fdiagnostics-color=always. 이로 인해 구문 분석 컴파일러 오류에 의존하는 다양한 도구가 중단됩니다.

또는 옵션을 전달하여 less색상 코드를 터미널로 강제로 보낼 수 있습니다. 후자는 실제 ANSI 색상 코드만 허용하므로 더 안전합니다.-r-R

결론적으로:

gcc -fdiagnostics-color=always a.c 2>&1 | less -R

관련 정보