나는 Linux 터미널의 256가지 텍스트 색상을 모두 활용하는 프로그램을 작성하고 싶습니다. 그러나 지금까지 "\033[1;NUMmNUM\033[1;m") 형식의 색상 코드를 몇 개만 찾았습니다. 그러나 이러한 이스케이프 코드는 20~30가지 색상만 허용합니다.아니요Linux 터미널에서는 256을 허용해야 합니다. 내 응용프로그램에 다른 색상을 표시하려면 어떻게 해야 합니까 curses
?
답변1
설정에서 확인하실 수 있습니다 TERM
. 이하로 설정될 가능성이 있습니다.유능한끈. 색상을 테스트하려면 GNU를 실행할 수 있습니다.msgcat
. 예를 들면 다음과 같습니다.
echo $TERM
msgcat --color=test
TERM=xterm-256color
msgcat --color=test
또는 사용@이그나시오 바스케스-아브람스msgcat 대신 루프를 실행하세요.
자세한 내용은어떻게예를 들어 무엇을 설정할지 살펴보세요.
답변2
이스케이프 코드 사용을 중지하고 setaf
terminfo 기능을 사용하십시오.
$ for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; tput setaf 15 ; echo
답변3
TERM
tput
터미널이 지원하는 색상 수와 전경( setaf
) 및 배경( )을 설정하는 방법을 알려줍니다 (및 터미널 데이터베이스를 사용하는 기타 응용 프로그램).setab
예제 스크립트는 종료되지만 제대로 재설정되지 않습니다.
for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; echo ; tput op
다음은 설명하기 위한 xterm의 스크린샷입니다.
어쨌든 msgcat
터미널 데이터베이스를 사용하되 터미널의 색상 기능에 대해 하드 코딩된 가정을 하십시오. 이들 중 일부는 재검토될 필요가 있습니다. 예를 들어, 코딩 오류가 기록됩니다.이 줄:
(strlen (term) >= 4 && memcmp (term, "rxvt", 7) == 0)