ANSI Color 문법
----------------------------------------------------------------
ANSI 문법: {시작문자}{속성들}{색}{종료문자}
----------------------------------------------------------------
{시작문자}
\e[
{속성들}
0 속성없음
1 도톰하게
3 이탤릭체
4 밑줄표시
5 반짝이게
7 색깔반전
8 문자숨김
9 문자취소선
{색}
글자색
30m 검정
31m 빨강
32m 초록
33m 노랑
34m 파랑
35m 분홍
36m 청록
37m 하얀
배경색
40m 검정
41m 빨강
42m 초록
43m 노랑
44m 파랑
45m 분홍
46m 청록
47m 하얀
글자색 고강도
90m 검정
91m 빨강
92m 초록
93m 노랑
94m 파랑
95m 분홍
96m 청록
97m 하얀
배경색 고강도
100m 검정
101m 빨강
102m 초록
103m 노랑
104m 파랑
105m 분홍
106m 청록
107m 하얀
{종료문자}
\e[0m
----------------------------------------------------------------
ANSI 예제:
echo -e "\e[31m빨강\e[0m"
echo -e "\e[1;4;31m굵은밑줄빨강\e[0m"
----------------------------------------------------------------
ANSI Color 출력 예제
$ echo -e "\e[31m빨강\e[0m"
빨강
$ echo -e "\e[1;4;31m굵은밑줄빨강\e[0m"
굵은밑줄빨강
ANSI Color 출력 쉘스크립트
$ vi ansi_color.bash
#!/bin/bash
#
# ANSI 형식: {시작문자}{속성들}{색}{종료문자}
#
# {시작문자}:
# \e[
# {속성들}:
# 0 속성없음
# 1 도톰하게
# 3 이탤릭체
# 4 밑줄표시
# 5 반짝이게
# 7 색깔반전
# 8 문자숨김
# 9 문자취소선
#
# {색}:
# 글자색
# 30m 검정
# 31m 빨강
# 32m 초록
# 33m 노랑
# 34m 파랑
# 35m 분홍
# 36m 청록
# 37m 하얀
#
# 배경색
# 40m 검정
# 41m 빨강
# 42m 초록
# 43m 노랑
# 44m 파랑
# 45m 분홍
# 46m 청록
# 47m 하얀
#
# 글자색 고강도
# 90m 검정
# 91m 빨강
# 92m 초록
# 93m 노랑
# 94m 파랑
# 95m 분홍
# 96m 청록
# 97m 하얀
#
# 배경색 고강도
# 100m 검정
# 101m 빨강
# 102m 초록
# 103m 노랑
# 104m 파랑
# 105m 분홍
# 106m 청록
# 107m 하얀
#
# {종료문자}:
# \e[0m
#
# ANSI 예제:
# echo -e "\e[31m빨강\e[0m"
# echo -e "\e[1;4;31m굵은밑줄빨강\e[0m"
normal=0
bold=1
italic=2
underline=3
blink=4
reverse=5
concealed=6
escline=7
color=8
bg_color=9
black=10
red=11
green=12
yellow=13
blue=14
purple=15
cyan=16
white=17
_NAME[black]='검정'
_NAME[red]='빨강'
_NAME[green]='초록'
_NAME[yellow]='노랑'
_NAME[blue]='파랑'
_NAME[purple]='분홍'
_NAME[cyan]='청록'
_NAME[white]='하얀'
# ANSI 접두사
_ANSI_ON='\e['
# ANSI 초기화
_ANSI_OFF='\e[0m'
# 문자 일반
_ANSI_ATTR[normal]='0'
# 문자 도톰
_ANSI_ATTR[bold]='1'
# 문자 이탤릭채
_ANSI_ATTR[italic]='3'
# 문자 밑줄
_ANSI_ATTR[underline]='4'
# 문자 반짝
_ANSI_ATTR[blink]='5'
# 문자색 반전(글자색/배경색 서로 바꿈)
_ANSI_ATTR[reverse]='7'
# 문자 숨김
_ANSI_ATTR[concealed]='8'
# 문자 취소선
_ANSI_ATTR[escline]='9'
# 문자 도톰 제거
_ANSI_RM[bold]='22m'
# 문자 이탤릭체 제거
_ANSI_RM[italic]='23m'
# 문자 밑줄 제거
_ANSI_RM[underline]='24m'
# 문자 반전(글자색/배경색) 제거
_ANSI_RM[reverse]='27m'
# 문자 취소선 제거
_ANSI_RM[escline]='29m'
# 문자 색깔 제거
_ANSI_RM[color]='39m'
# 문자 배경색 제거
_ANSI_RM[bg_color]='49m'
# 글자색을 지정
_ANSI_COLOR[black]='30m' # 검정
_ANSI_COLOR[red]='31m' # 빨강
_ANSI_COLOR[green]='32m' # 초록
_ANSI_COLOR[yellow]='33m' # 노랑
_ANSI_COLOR[blue]='34m' # 파랑
_ANSI_COLOR[purple]='35m' # 분홍
_ANSI_COLOR[cyan]='36m' # 청록
_ANSI_COLOR[white]='37m' # 하얀
# 배경색을 지정
_ANSI_COLOR_BG[black]='40m' # 검정
_ANSI_COLOR_BG[red]='41m' # 빨강
_ANSI_COLOR_BG[green]='42m' # 초록
_ANSI_COLOR_BG[yellow]='43m' # 노랑
_ANSI_COLOR_BG[blue]='44m' # 파랑
_ANSI_COLOR_BG[purple]='45m' # 분홍
_ANSI_COLOR_BG[cyan]='46m' # 청록
_ANSI_COLOR_BG[white]='47m' # 하얀
# 글자색을 고강도로 지정(High Intensity)
_ANSI_COLOR_HI[black]='90m' # 검정
_ANSI_COLOR_HI[red]='91m' # 빨강
_ANSI_COLOR_HI[green]='92m' # 초록
_ANSI_COLOR_HI[yellow]='93m' # 노랑
_ANSI_COLOR_HI[blue]='94m' # 파랑
_ANSI_COLOR_HI[purple]='95m' # 분홍
_ANSI_COLOR_HI[cyan]='96m' # 청록
_ANSI_COLOR_HI[white]='97m' # 하얀
# 배경색을 고강도로 지정(High Intensity)
_ANSI_COLOR_HI_BG[black]='100m' # 검정
_ANSI_COLOR_HI_BG[red]='101m' # 빨강
_ANSI_COLOR_HI_BG[green]='102m' # 초록
_ANSI_COLOR_HI_BG[yellow]='103m' # 노랑
_ANSI_COLOR_HI_BG[blue]='104m' # 파랑
_ANSI_COLOR_HI_BG[purple]='105m' # 분홍
_ANSI_COLOR_HI_BG[cyan]='106m' # 청록
_ANSI_COLOR_HI_BG[white]='107m' # 하얀
# 일반적인 글자색 출력
for color in black red green yellow blue purple cyan white
do
echo -e -n "[${_ANSI_COLOR[color]}: ${_ANSI_ON}${_ANSI_COLOR[color]}${_NAME[color]}${_ANSI_OFF}] "
done
echo
# 일반적인 배경색 출력
for color in black red green yellow blue purple cyan white
do
echo -e -n "[${_ANSI_COLOR_BG[color]}: ${_ANSI_ON}${_ANSI_COLOR_BG[color]}${_NAME[color]}${_ANSI_OFF}] "
done
echo
# 속성별 글자 출력
for color in black red green yellow blue purple cyan white
do
for attr in bold italic underline blink reverse concealed escline
do
echo -e -n "[${_ANSI_ATTR[attr]};${_ANSI_COLOR[color]}: ${_ANSI_ON}${_ANSI_ATTR[attr]};${_ANSI_COLOR[color]}${_NAME[color]}${_ANSI_OFF}] "
done
echo
done
$ bash ansi_color.bash
기타
vi에서 ANSI 쓰기
$ vi ansi.txt
^[[0;31m빨강^[[0m
$ cat ansi.txt
빨강
vi 에서 \e 쓰기(”’^[”’)
입력모드(i) -> Ctrl + v + ESC
Post a Comment