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와 같이 동작이 이에 따라 달라지는 라이브러리를 사용하는 경우에만 중요합니다.)