터미널에서 RGB 컬러 출력을 활성화하는 방법은 무엇입니까?

터미널에서 RGB 컬러 출력을 활성화하는 방법은 무엇입니까?

ANSI 이스케이프 코드를 사용하여 gnome 터미널에 컬러 문자열을 인쇄하려고 하는데 사용자 정의 색상이나 256 추가 색상에서는 작동하지만 RGB 코드에서는 작동하지 않습니다.

따라서 단순화하면 다음과 같습니다.

cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color

그놈 터미널에서 RGB 색상 코드로 무언가를 출력하려면 어떻게 해야 합니까?

출력을 위해 다음 링크를 따르고 있습니다.Wikipedia ANSI 이스케이프 코드.

나는 다음을 추가했다:

$ export TERM=xterm-256color

256색을 지원하기 위해 내 .bashrc 파일에 다음을 수행합니다.

$ tput colors

중요한 경우 256을 출력합니다.

답변1

다음과 같은 이유로 터미널에서 RGB 색상을 사용할 수 없습니다.

  • Bash는 명령줄 색상을 선택하지 않습니다.
  • Bash는 ANSI 색상만 지정할 수 있습니다.

위의 두 가지 이유는 매우 밀접하게 연관되어 있습니다. 이들 중 대부분은 화면과 ANSI 색상 사양에 따라 다릅니다. 좋은 터미널 에뮬레이터를 사용하는 경우 특정 ANSI 색상 코드에 대해 사용자 정의 RGB 색상을 설정할 수 있습니다.

쉘로서의 Bash는 화면이 디스플레이로 무엇을 할 수 있는지에 대해 무력합니다. 터미널의 단어만 화면으로 전달합니다. 화면에서 무엇을 할지 결정할 수 있습니다. 화면은 ANSI 이스케이프 코드가 나타내는 색상을 결정할 수 있습니다(터미널이 색상을 허용하는 경우).

해결 방법은 터미널 색상 사양을 변경하는 것입니다. 그러나 색상을 변경할 수 있는 경우는 거의 없습니다(아무것도 모릅니다).

답변2

그놈 터미널에서 트루 컬러가 작동하려면 vte >= 0.36이 필요합니다. vte가 충분히 최신인지 확인하세요. 이 경우 코드가 작동해야 합니다.

(참고: 예제 애플리케이션에서처럼 하드 코딩된 문자열을 출력할 때 $TERM 값은 반드시 전혀 관련이 없습니다. ncurses와 같이 동작이 이에 따라 달라지는 라이브러리를 사용하는 경우에만 중요합니다.)

관련 정보