텍스트의 색상과 터미널의 배경을 변경 하시겠습니까?


72

preference을 통해 색상을 변경할 수 있지만 명령 줄을 통해 터미널의 배경색과 텍스트 색상을 어떻게 변경할 수 있습니까?


영구적으로 또는 부수적으로?
Jacob Vlijm

을 사용할 수도 있습니다 dconf. 나는 전에 비슷한 질문에 대한 답변을 작성했다 : askubuntu.com/a/628129/295286
Sergiy Kolodyazhnyy

\033[00;34mFOO\033[00m
Rafael Barros

답변:


50

특정 XTerm / ANSI 호환 터미널 (예 : xtermgnome-terminal)에서는 기본 8/16 색 팔레트보다 큰 팔레트를 사용하여 색상을 설정할 수 있습니다 (예 : 88 색, 256 색 또는 16777216 색 (RGB) 팔레트 사용) 둘다 xtermgnome-terminal256 색과 16777216-색 (RGB) 팔레트)을 모두 지원; 쉘이 이것을 무시할 수 있음을 명심하십시오 (예를 들어 zsh).

다음은 256 색 팔레트를 지원하는 XTerm / ANSI 호환 터미널에서 ANSI 색상 코드와 함께 256 색 팔레트의 색상을 나열하는 스크립트입니다.

#!/bin/bash
for((i=16; i<256; i++)); do
    printf "\e[48;5;${i}m%03d" $i;
    printf '\e[0m';
    [ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done

스크린 샷 1

스크린 샷

전경 또는 배경에 색상을 적용할지 여부에 따라 다음 명령에서 또는 각각 의 <fg_bg>값을 사용하십시오 .3848

printf '\e[<fg_bg>;5;<ANSI_color_code>m'

예를 들어, 전경색 ( <fg_bg>= 38)을 빨간색 ( <ANSI_color_code>= 196)으로 설정하고 배경색 ( <fg_bg>= 48)을 검은 색 ( <ANSI_color_code>= 0)으로 설정하려면 다음을 수행하십시오.

printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'

스크린 샷 3

printf '\e[K'배경색을 전체 라인에 적용하고 전경색을 커서에 적용하려면을 사용하여 프롬프트를 다시 그려야합니다 .

스크린 샷 4

호환되는 터미널에서 ANSI 색상 코드 대신 RGB 값을 사용하여 동일한 작업을 수행 할 수 있습니다. 전경 또는 배경에 색상을 적용할지 여부에 따라 다음 명령에서 또는 각각 의 <fg_bg>값을 사용하십시오 .3848

printf '\e[<fg_bg>;2;<R>;<G>;<B>m'

예를 들어, 전경색 ( <fg_bg>= 38)을 빨간색 ( <R>= 255, <G>= 0, <B>= 0)으로 설정하고 배경색 ( <fg_bg>= 48)을 검은 색 ( <R>= 0, <G>= 0, <B>= 0)으로 설정하려면 다음을 수행하십시오.

printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'

스크린 샷 5

다시, printf '\e[K'배경색을 전체 라인에 적용하고 전경색을 커서에 적용하려면을 사용하여 프롬프트를 다시 그려야합니다 .

스크린 샷 6

두 방법 중 하나를 사용 printf '\e[0m'하여 모든 속성을 재설정 할 수 있습니다 .

스크린 샷 7


1
둘 다 xtermgnome-terminal\ e [38/48; 2; R; G; Bm 트루 컬러 이스케이프 시퀀스; 그러나 xterm실제 색상을 256 색 팔레트에서 가장 가까운 색상으로 반올림합니다. gnome-terminal이스케이프 시퀀스에 주어진 정확한 트루 컬러를 표시합니다.
egmont

2
\ e [K는 위험하다; 일부 에뮬레이터 (예 :) xterm에서 커서가 맨 오른쪽 가장자리에 표시되는 경우 (가장 오른쪽 열에 표시되지만 문자가 이미 오른쪽 열에 인쇄되어 논리적으로 이미 그 이상인 경우) 마지막 문자가 제거됩니다. 예를 들어 bugzilla.gnome.org/show_bug.cgi?id=740789 또는 savannah.gnu.org/bugs/?36831를 참조하십시오 .
egmont

나 자신을 교정 : 줄의 시작 부분에서 (끝이 아닌 프롬프트의 시작 부분에서) \ e [K를 방출하면 물론 안전합니다. (여러 줄 프롬프트 나 명령으로는 작동하지 않습니다.)
egmont

@egmont 유용한 정보에 감사드립니다. 그놈 Bugzilla에서 수정 된 것으로 표시되어 있습니다.이 경우입니까? 지금은 이것을 테스트 할 수 없으므로 나중에이 경우에 해당하는지 확인하고 (먼저 회신하지 않는 한) 답변에 해당 정보를 포함시키기 위해 나중에 할 것입니다.
kos

최신 버전의 gnome-terminal은 해당 문자를 제거하지 않습니다. 이것이 올바른 행동인지 여부는 의문의 여지가 있습니다. 결국 그래픽 터미널 에뮬레이터는 고대 장치를 모방하고 있습니다. 잘못된 설계 결정 (xterm에서와 같이)을 모방해야합니까, 아니면 (gnome-terminal에서와 같이) 무시해야합니까? 정답이 하나도없는 어려운 질문입니다.
egmont

33

미리보기 열을 제외한 이 페이지 에있는 정보 :

시퀀스는 이스케이프 문자 (종종” ^[”또는” <Esc>”로 표시됨)와 다른 문자” ^[FCm”(여기서 FC글 머리 기호 목록의 숫자 중 하나)로 구성됩니다.

에서 bashEsc코드는 다음 중 하나 일 수 있습니다 :

  1. \e
  2. \033 (옥탈)
  3. \x1B (16 진수)

참고 1 : " \e[0m"시퀀스는 모든 속성 (포맷 및 색상)을 제거합니다. 각 컬러 텍스트의 끝에 추가하는 것이 좋습니다.

참고 2 : 전경색과 배경색은 터미널 구성에 따라 다를 수 있으며 일부 색상 만 지원됩니다 .

설정 / 리셋

  • 0: 모든 수정 자, 전경 및 배경 속성을 재설정 / 제거합니다. echo -e "\e[0mNormal Text"
  • 1: 굵게 / 밝게 : echo -e "Normal \e[1mBold"
  • 2: 희미하게 : echo -e "Normal \e[2mDim"
  • 4: 밑줄 : echo -e "Normal \e[4mUnderlined"
  • 5: 깜박임 (XTerm을 제외한 대부분의 터미널에서 작동하지 않음) : echo -e "Normal \e[5mBlink"
  • 7: 반전 / 반전 : echo -e "Normal \e[7minverted"
  • 8: 숨김 (민감한 정보에 유용) : echo -e "Normal \e[8mHidden Input"
  • 21: 굵게 / 밝게 재설정 / 제거 : echo -e "Normal \e[1mBold \e[21mNormal"
  • 22: 희미하게 재설정 / 제거 : echo -e "Normal \e[2mDim \e[22mNormal"
  • 24: 밑줄 재설정 / 제거 : echo -e "Normal \e[4mUnderlined \e[24mNormal"
  • 25: 깜박임 재설정 / 제거 : echo -e "Normal \e[5mBlink \e[25mNormal"
  • 27: 반전 / 반전 재설정 / 제거 : echo -e "Normal \e[7minverted \e[27mNormal"
  • 28: 숨겨진 재설정 / 제거 : echo -e "Normal \e[8mHidden \e[28mNormal"

전경

  • 39: 기본값 (일반적으로 녹색, 흰색 또는 밝은 회색) : echo -e "Default \e[39mDefault"
  • 30: 블랙 : echo -e "Default \e[30mBlack"(가장 배경색과 함께 : echo -e "Default \e[30;107mBlack on white")
  • 31: 빨간색 (녹색 배경과 함께 사용하지 않음)
  • 32: 초록
  • 33: 노랑
  • 34: 푸른
  • 35: 자홍색 / 보라색
  • 36시안
  • 37: 라이트 그레이
  • 90: 짙은 회색
  • 91: 라이트 레드
  • 92: 연한 초록색
  • 93: 연노랑
  • 94: 라이트 블루
  • 95: 라이트 마젠타 / 핑크
  • 96라이트 시안
  • 97: 하얀

배경

  • 49: 기본 배경색 (보통 검은 색 또는 파란색)
  • 40블랙
  • 41: 레드
  • 42: 초록
  • 43: 노랑
  • 44: 푸른
  • 45: 자홍색 / 보라색
  • 46시안
  • 47: 밝은 회색 (흰색 전경과 함께 사용하지 않음)
  • 100: 진한 회색 (검은 색 전경과 함께 사용하지 않음)
  • 101: 라이트 레드
  • 102: 연두색 (백색 전경과 함께 사용하지 않음)
  • 103: 밝은 노란색 (흰색 전경과 함께 사용하지 않음)
  • 104: 하늘색 (밝은 노란색 전경과 함께 사용하지 않음)
  • 105: 라이트 마젠타 / 핑크 (라이트 포 그라운드에서 사용하지 않음)
  • 106: 시안 색 (흰색 전경과 함께 사용하지 않음)
  • 107: 흰색 (밝은 전경에서는 사용하지 않음)

전경색과 배경색을 동시에 설정하려면 the form을 사용하십시오 echo -e "\e[S;FG;BGm". 예를 들면 : echo -e "\e[1;97;41m"(빨간색 바탕에 굵은 흰색 전경)

256 색 옵션에 대해서는 소스 페이지를 참조하십시오.


30

부수적으로 색상 변경

부수적으로 색상을 변경하려는 경우 :

setterm 명령을 사용할 수 있습니다 :

setterm -term linux -back <background_colour> -fore <text_color> -clear

색상에서 (앞과 배경 모두)를 선택할 수 있습니다.

black|blue|green|cyan|red|magenta|yellow|white|default

더 많은 옵션 :

setterm -help

프로필 (색상) 설정 변경

14.04에서는 dconf색상이나 터미널을 설정하는 데 사용할 수있는 옵션을 찾지 못했습니다 . 그러나 당신은 사용할 수 있습니다gconftool

  • 먼저 프로필 이름을 가져와야합니다.

    gconftool-2 --get /apps/gnome-terminal/global/profile_list
    
  • 그런 다음 프로필의 텍스트 색상을 설정하려면

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
    

    예를 들어 텍스트 색상을 흰색으로 설정

    배경색과 동일 :

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
    

    예를 들어 배경색을 검은 색으로 설정하려면

또한, 컬러 (들), 당신은 간단하게 사용할 수의 이름을 설정 white또는 green는 setterm 명령, 예를 들어, 같은 팔레트에서을 :

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black

1
초기 setterm 명령에서 이중 대시 여야합니다.
user1770201

14.04에서 근무했지만 16.04에서는 (베타; 그 이유인지 확실하지 않음) ... 여전히, dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"트릭을 수행했습니다.
Janaka Bandara

우분투 1704에서 작동하지 않는, 그것은 나빠 보인다
왁스 케이지

1
gconftool-2(Ubuntu 14.04 및 이후 릴리스 몇 개) dconf또는 gsettings최신 버전의 Ubuntu에서 gnome-terminal의 설정을 변경 하면 동일한 프로파일의 모든 탭과 창 에 즉시 영향을 미칩니다 . OP 가이 동작을 찾고 있다고 생각하지 않습니다.
egmont

5

컬러 출력을 얻는 데 사용 된 다양한 컬러 코드를 사용하여 컬러 배경 을 얻을 수도 있습니다 .

40  black
41  red
42  green
43  yellow
44  blue
45  magenta
46  cyan
47  white

따라서 다음 명령은 배경을 빨간색으로 바꿉니다.

$ echo -e '\e[0;41m'

쉘, 터미널 에뮬레이터 등에 따라을 필요로하지 않을 수 있습니다 -e.


3

전경 또는 배경을 팔레트의 특정 색상으로 전환하거나 일부 터미널에서 직접 RGB 색상으로 전환하려면 kos의 답변을 참조하십시오. 이러한 시퀀스의 효과는 다른 색상을 선택하거나 기본값으로 되돌릴 때까지 지속됩니다.

일부 터미널 에뮬레이터가 지원하는 또 다른 방법 은 OSC 10/11 이스케이프 시퀀스를 사용하여 터미널의 기본 전경 및 배경 색상 의 정확한 RGB 값 을 재정의 하는 것입니다 .

echo -ne '\e]10;#123456\e\\'  # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\'  # set default background to #abcdef

이것은 다른 OSC 10/11에 의해 재정의되거나 OSC 110/111을 통해 재설정 될 때까지 훨씬 오래 지속될 수 있지만 dconf 방식과 달리 여전히 현재 터미널에만 영향을 미칩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.