bash 폰트색상 및 스타일링

이번시간에는 bash 스크립트를 작성할때, 결과물을 칼라풀하게 보여주는 방법에 대해서 설명드릴게요. 맥북 사용자분들은 터미널의 bash이 옛날버전이라 색상기능을 지원하지 않을 수도 있어요. Homebrew 등을 이용해서 최신버전을 설치해주세요.

brew install bash

설치를 하고나서 bash의 버전을 확인해주세요

bash --version

버젼이 5.0.17이상이 아니라면 방금설치한 bash를 기본으로 사용하지 않는 경우에요. 아래 명령어를 실행해서 bash이 어디에 설치가 되어있는지를 찾아봅니다.

which -a bash

다른 곳에 설치되어 있는 bash의 버전을 보면서 최신 버전의 경로를 찾아주세요.

/usr/local/bin/bash --version

최신 버전의 bash을 찾았으면, PATH에 해당 경로를 추가해주세요.

PATH=$PATH:/usr/local/bin

bash의 버전을 확인해보면, 최신버전이 되어있을거에요. 혹시 아직도 옛날버전으로 나온다면 PATH관련한 도움글을 찾아서 해결한뒤에 계속 진행해주세요.

bash --version

자 이제, 색상테스트를 해봅니다

echo -e "\033[1;31m This is red text \033[0m"

위의 글씨가 빨강색으로 출력이 되면 설치가 잘된거에요.

bash에서 문자열을 꾸미는 예약어는 바로:

  • \e
  • \033
  • \x1B

이렇게 세가지 인데요, printf에서는 셋다 사용이 가능한데,

printf "\e[2mtest\n"
printf "\033[2mtest\n"
printf "\x1B[2mtest\n"

저만 그런건지 echo로 출력할때는 \033만 사용이 가능하더라구요, 원래 \e도 되야 하는데 제가 맥이라 그런지 echo로 출력할때는 \033으로만되서 예제에서는 \033으로 사용할건데요 \e가 되는 분은 \e로 바꿔서 실행하셔도됩니다. 그리고 echo로 출력할때는 -e옵션을 주어야 색상코드가 인식이 됩니다.

echo -e "\033[2mtest"

폰트스타일 예약어(이하 \033)는 폰트의 스타일을 지정할때 사용되고요, 옵션은 6가지가 있습니다. 사용방법은 문자열 안에서 \033로 시작하면 지금부터는 폰트 스타일이야 라고 bash한테 알려주는거에요. \033[1m이렇게 1번을 주면 지금부터 쓰는 문자는 두껍게 보여주라는 뜻이에요.

echo -e "기본\033[1m굵게"

2번은 색상이 살짝 바래보이는 것이에요. 스타일적용한걸 취소하려면, \033[0m을 만나면 거기서 스타일적용이 끝납니다.

echo -e "기본\033[2m흐리게\033[0m기본"

아래는 폰스타일 관련한 명령어들의 번호입니다.

\033[1m굵게
\033[2m희미하게
\033[4m밑줄
\033[7m배경색과 전환

모든 스타일을 취소할때는 \e[0m을 사용하면 되는데, 만약에 여러가지 적용된 스타일중에서 하나만 제외하고 다른 스타일은 계속 사용하고 싶다면 아래에 각 스타일별로 취소하는 명령어의 번호를 별도로 제공하고 있습니다.

\033[0m모든 스타일 적용 취소
\033[21m굵게한거 취소
\033[22m회색으로 만든거 취소
\033[24m밑줄 취소
\033[27m배경색이랑 전환했던거 취소

아래는 폰트의 색상을 바꾸는 명령어입니다.

\033[39m기본색
\033[30m검정
\033[31m빨강
\033[32m초록
\033[33m노랑
\033[34m파랑
\033[35m형광분홍
\033[36m아쿠아
\033[37m밝은회색
\033[90m어두운회색
\033[91m밝은 빨강
\033[92m밝은 초록
\033[93m밝은 노랑
\033[94m밝은 파랑
\033[95m밝은형광분홍
\033[96m밝은아쿠아
\033[97m흰색

이번엔 글씨의 배경색을 바꾸는 코드입니다.

\033[49m기본색
\033[40m검정
\033[41m빨강
\033[42m초록
\033[43m노랑
\033[44m파랑
\033[45m형광분홍
\033[46m아쿠아
\033[47m밝은회색
\033[100m어두운회색
\033[101m밝은 빨강
\033[102m밝은 초록
\033[103m밝은 노랑
\033[104m밝은 파랑
\033[105m밝은형광분홍
\033[106m밝은아쿠아
\033[107m흰색

색상은 총 256가지가 지원이 되고 있고요. 터미널에서 아래의 코드를 실행하면 사용할수 있는 모든 칼라와 해당하는 번호를 볼수있습니다.

for fgbg in 38 48 ; do
  for color in {0..255} ; do
    printf "\e[${fgbg};5;%sm  %3s  \e[0m" $color $color
    if [ $((($color + 1) % 6)) == 4 ] ; then
      echo # New line
    fi
  done
  echo
done

Source: https://misc.flogisoft.com/bash/tip_colors_and_formatting