Skip to content

Instantly share code, notes, and snippets.

@vozlt
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vozlt/320481080bdd6ddb744e to your computer and use it in GitHub Desktop.
Save vozlt/320481080bdd6ddb744e to your computer and use it in GitHub Desktop.
Linux ansi color print
#!/bin/bash
#
# @file: ansicolor.sh
# @brief:
# @author: YoungJoo.Kim <http://vozlt.com>
# @version:
# @date:
# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment