[Linux 셸 스크립트] 사용자 인터페이스 - 008 표시 문자색 변경하기
본문 바로가기
IT 이야기/Linux 셸 스크립트

[Linux 셸 스크립트] 사용자 인터페이스 - 008 표시 문자색 변경하기

by 찬찬이 아빠 2021. 3. 3.
반응형
  1. 사용 명령어

(1) echo 

 

 

  2. 키워드 & 사용처

(1) 키워드

터미널, 색상

 

(2) 사용처

메시지 표시에 문자색을 변경하거나 반전시키는 등 주의나 강조를 하고 싶을 때 사용합니다.

 

  3. 실행 예제
$ ./color.sh
Script Start.
    Importan Message          <- 색이 변함
Script End.

 

 

  4. 스크립트

#!/bin/sh

 

echo "Script Start."

 

# 배경을 흰색(47), 문자색을 빨강(31)으로 변경

echo -e "\033[47;31m Important Message \033[0m"           

 

echo "Script End."

 

 

  5. 해설

이 스크립트는 "Important Message"라는 문자열을 흰색 배경에 빨강으로 표시합니다. 셸 스크립트에서 문자열을 표시할 때 echo 명령어를 사용합니다. 이때 메시지 일부를 강조하거나 주의를 끌고 싶다면 -e 옵션을 지정해서 이스케이프 시퀀스라는 제어 코드로 표시할 문자에 색을 입힐 수 있습니다. 이스케이프 시퀀스 작성법은 다음처럼 이스케이프를 나타내는 \033[m 사이색상 파라미터를 지정합니다.

\033[파라미터m 표시할 문자열 \033[0m

 

예를 들어 단순히 문자색을 빨강(31번)으로 표시하려면 다음과 같습니다.

\033[31m 표시할 문자열 \033[0m

 

파라미터를 여러 개 지정할 때는 ;(세미콜론) 으로 나열합니다. 에서는 파라미터로 31번(문자색을 빨강)과 47번(배경색을 흰색)을 합쳐서 지정합니다.

 

문자색 지정을 초기화하려면 0번을 지정하여 \033[0m 이라고 작성합니다. 이렇게 하지 않으면 그 이후 모든 문자색이 변하므로 처럼 문자열 끝에 작성하는 것이 일반적입니다. 색 지정 번호는 30번대가 문자색(Foreground Color), 40번대가 배경색(Background Color)입니다.

구분 검정 빨강 초록 노랑 파랑 보라 하늘색 흰색
문자색 30 31 32 33 34 35 36 37
배경색 40 41 42 43 44 45 46 47

이런 번호는 리눅스라면 "man console_codes", FreeBSD라면 "man screen"으로 확인 가능한 콘솔 이스케이프 시퀀스 설명서에 나와 있습니다.

 

 

<주의사항>

  • 이스케이프 시퀀스를 쓰면 다양한 색으로 꾸밀 수 있지만 사용 환경에 따라서는 어지럽기만 한 결과가 될 수도 있습니다. 색상 강조는 어디까지나 보조 용도로만 쓰기 바랍니다.
  • 환경에 따라서는 echo 명령어를 쓸 때 이스케이프 시퀀스를 해석하는 -e 옵션이 필요 없기도 합니다. Mac OS X의 sh나 우분투처럼 /bin/dash가 sh인 리눅스가 해당합니다. 이런 환경에서는 다음처럼 -e 옵션이 없어도 echo에서 색상이 변경됩니다.
echo "\033[47;31m Important Message \033[0m"

 

 

참고서적 : 유닉스 리눅스 셸 스크립트 예제 사전

반응형

댓글