一寸大海 劫長之井

bash 텍스트 컬러링에 대하여. 본문

기타

bash 텍스트 컬러링에 대하여.

하느바람 2016. 10. 13. 19:52

배쉬 텍스트 컬러링

리눅스 터미널을 보다 보면 참 다양한 텍스트 컬러링을 볼 수 있습니다. 
어떻게 하는 걸까요? 

아참. 윈도우는요? 일단 안 된다고 들었습니다. 


ANSI ESCAPE CODE - Select Graphic Rendition Parameters

컴퓨터의 상태를 제어 하기 위해서 ESC+문자 의 구조로 하여서 텍스트를 전달 하는 것이 아니라. 특정 제어동작을 하도록 지시하는 코드가 ANSI ESCAPE CODE 입니다.  대충 삑 소리를 내라 등을 포함 하는 코드 입니다.  그중에서 그래픽과 관련된 코드인 SGR 코드들을 이용하여 텍스트를 제어 합니다. 

대략적인 사용 법은  아래와 같습니다. 

echo 로 출력 되는 스트링 "\033[3mCOLOR1" 에 따라서  COLOR1 은 붉은 색으로 표시 되게 됩니다.  이중에서 \033이 ESC 키에 대한 아스키 코드 이며, 혹은 유니코드 \u001b를 쓰기도 합니다 ,  ESC[ 로 코드를 시작하고 m 으로 코드를 종료합니다.  중간의 31은 forground color 를 붉은색으로 변경 하라는, 즉 글자색을 붉은색으로 변경 하라는 코드입니다., 사실 이 코드는 COLOR1 다음에 출력되는 모든 글자가 붉은 색으로 표시되는 문제가 있습니다.  "\033[0m" 으로 기본 형식으로 변경 할 수 있습니다 , 금방 나올 꺼지만 0은 서식을 리셋 하는 코드 입니다. 


그럼 대표적인 코드 몇가지 들을 봅시다. (전체 코드 표는 https://en.wikipedia.org/wiki/ANSI_escape_code#SGR 이나 해당 페이지의 SGR 부분을 참고해 주세요)

CODE 

EFFECT 

NOTE 

0

 리셋 / 노말

모든 속성 제거 

볼드 or 좀 더 강렬해짐  

 

3

 이텔릭

광범위하게 지원 하지 않음,  간혹 반대로 적용 됨. 

 4

밑줄 

 

 7

이미지 : 역전

배경색과 전경색 색상 반전 됨. 

 37-47

전경색 설정

  3n  n 에 해당 하는 설정은 하기 컬러 테이블을 참고 하세요.

 38

확장 전경색 설정

전통적으로 5;n  (n은 0~255) 나 2;r;g;b 로 지정 합니다.  

 39

기본 전경색 설정 

 

 40 - 47

배경색 설정

  4n  n 에 해당 하는 설정은 하기 컬러 테이블을 참고 하세요.

 48

확장 배경색 설정

 전통적으로 5;n  (n은 0~255) 나 2;r;g;b 로 지정 합니다.  

49

기본 배경색 설정



컬러 테이블.  ( 위키피디아에서 통째로 가져옴)

Color table[15]
Intensity01234567
NormalBlackRedGreenYellow[16]BlueMagentaCyanWhite
BrightBlackRedGreenYellowBlueMagentaCyanWhite


256 컬러 모드의 경우  ( 38;5;# 이나 48;5;# 의 경우)
  • 0x00-0x07은 기본 컬러셋 (30-37)
  • 0x08-0x0F는 고 강도 컬러 
  • 0x10-0xE7 6x6x6 = 216색.  16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
  • 0xE8-0FF: 검은색 부터 하얀색 순서로 그라데이션 컬러 


참고 및 출처 :

 - https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

 - http://sjava.net/2011/01/ansi-color-code-and-text-format/

 - http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize-Your-Bash-Prompt-on-Linux

 - http://www.december.com/html/spec/ascii.html

 - http://www.dreamy.pe.kr/zbxe/CodeClip/3765725

Comments