대안:

대안:

16진수 색상 값을 처리하기 위해 터미널에 색상을 표시하는 방법은 무엇입니까? 테마, XResources 등에 유용합니다. 예를 들어:

$ command '#FF0000'
// display a red square

나는 manjaro에서 urxvt, i3wm을 사용합니다.

답변1

대안:

디스플레이색상(){
    perl -e 'foreach $a(@ARGV){print "\e[48:2::".join(":",unpack("C*",pack("H*",$a))). "m \e[49m "};인쇄"\n"' "$@"
}

사용 예:

$ show_color "FF0088" "61E931" "1256E2"

그러면 주어진 RGB 배경색으로 공간이 인쇄됩니다. #RGB 코드에서는 사용 하면 안 됩니다 . 만약 존재한다면 독자를 위한 연습 차원에서 제거하겠습니다. ☺

터미널 에뮬레이터의 색상 팔레트는 변경되지 않습니다.

경고: 터미널 에뮬레이터는 다음을 이해해야 합니다.직접색올바른 ITU T.416 형식을 사용하는 SGR 제어 시퀀스. 일부는 이렇습니다. 오랫동안 잘못된 레시피에서 이러한 제어 시퀀스에 대해 자세히 알아보세요. rxvt-unicode가 이를 전혀 이해하지 못한다는 것을 알게 될 것입니다. 일반적인 잘못된 표현에 대해서는 다음과 같은 모호함으로 대체하십시오.

디스플레이색상(){
    perl -e 'foreach $a(@ARGV){print "\e[48;2;".join(";",unpack("C*",pack("H*",$a)))." m \e[49m "};인쇄"\n"' "$@"
}

또 다른 옵션:

setterm나는 노트북을 사용해서https://unix.stackexchange.com/a/491883/5132. 16진수 RGB 표기법을 이해하고 #이를 표시기로 사용하기도 합니다.

사용 예:

$ setterm -7 --배경 '#FF0088' ;인쇄'';
> setterm -7 --배경 '#61E931' ;인쇄'' \
> setterm -7 --배경 '#1256E2' ;인쇄'' \
> setterm -7 --배경 기본값 printf '\n'

이는 직접 색상 SGR 제어 순서를 이해하는 터미널의 다른 인쇄 예와 동일합니다.

이전 대안과의 한 가지 차이점은setterm 반품전용다른단말기. 직접 색상 SGR 제어 순서를 이해하지 못하는 터미널 유형에 대한 대체 방법이 있습니다. 인덱스 색상만 이해하는 터미널 유형(즉, 256개 색상만) 또는 16개의 AIXTerm 색상만 이해하는 터미널에서는 원하는 색상에 가장 가까운 RGB 색상을 선택하려고 시도합니다.

% TERM=rxvt-256color setterm -7 --Background "#FF0088" |hexdump -C
00000000 1b 5b 34 38 3b 35 3b 31 39 38 6d |.[48;5;198m|
0000000b
% TERM=ansi COLORTERM=16color setterm -7 --Background "#FF0088" |hexdump -C
00000000 1b 5b 31 30 35 6d |.[105m|
00000006
% TERM=ansi setterm -7 --Background "#FF0088" |hexdump -C
00000000 1b 5b 34 35 6d |.[45m|
00000005
%

추가 읽기

  • 조나단 데보인 폴라드(2018).setterm. 스낵 가이드. 소프트웨어.

답변2

다음 명령을 사용하여 터미널의 배경색을 변경할 수 있습니다.

printf '\e]11;%s\a' '#ff0000'

이는 적어도 xtermVTE 기반 터미널(예: VTE gnome-terminal) 에서는 작동하는 것 같습니다 .konsolerxvt

원하는 경우 배경 이외의 색상도 변경할 수 있습니다. 색상 1을 변경하고 해당 색상으로 직사각형을 표시하는 것과 같습니다.

printf '\e]4;1;%s\a\e[0;41m   \n   \n\e[m' '#ff0000'

여러 색상을 표시하려면:

show_colour() {
  for i do
    printf '\e]4;%d;%s\a\e[0;48;5;%dm%s\e[m\n' "$#" "$i" "$#" "$i"
    shift
  done
}

show_colour black purple green '#ff0000'

그러나 이는 해당 에뮬레이터 창의 색상 팔레트를 영구적으로 변경합니다. tput oc기본 색상을 복원하는 데 사용됩니다 .

다른 옵션은 다음을 실행하는 것입니다.

xlogo -bg '#ff0000'

또는

rxvt -bg '#ff0000'

답변3

KDE 터미널 프로그램 konsole 버전 21.12.3(https://konsole.kde.org/), 16진수 색상 코드 위로 마우스를 가져가면 해당 색상이 팝업 사각형으로 표시됩니다.

관련 정보