프로그래밍/기타
VT터미널에서 컬러 사용하기
kyudoc
2021. 3. 28. 10:30
728x90
디버깅 메시지를 보다보면 텍스트가 너무 많아서 원하는 메시지를 찾아 헤매는 경우가 많은데요. 정말 중요한 메시지에 색을 입히면 조금은 찾기 수월해집니다. VT100 이상 호환되는 터미널은 글씨와 배경에 색을 입힐 수 있습니다.
위의 프로그램의 소스 코드입니다.
#include <stdio.h>
#define COLOR_END "\x1b[0m"
#define COLOR_BOLD "\x1b[01m"
#define COLOR_BLINK "\x1b[05m"
#define COLOR_REVERSE "\x1b[07m"
#define FG_BLACK "\x1b[30m"
#define FG_RED "\x1b[31m"
#define FG_GREEN "\x1b[32m"
#define FG_YELLOW "\x1b[33m"
#define FG_BLUE "\x1b[34m"
#define FG_PINK "\x1b[35m"
#define FG_SKY "\x1b[36m"
#define FG_WHITE "\x1b[37m"
#define BG_BLACK "\x1b[40m"
#define BG_RED "\x1b[41m"
#define BG_GREEN "\x1b[42m"
#define BG_YELLOW "\x1b[43m"
#define BG_BLUE "\x1b[44m"
#define BG_PINK "\x1b[45m"
#define BG_SKY "\x1b[46m"
#define BG_WHITE "\x1b[47m"
#define COLOR_L_RED "\x1b[47;31m"
#define COLOR_L_GREEN "\x1b[47;32m"
#define COLOR_L_YELLOW "\x1b[47;33m"
#define COLOR_L_BLUE "\x1b[47;34m"
#define COLOR_L_MAGENTA "\x1b[47;35m"
#define COLOR_L_CYAN "\x1b[47;36m"
#define COLOR_L_WHITE "\x1b[47;37m"
int main()
{
printf(FG_RED "FG" COLOR_END " END\r\n"); // 1
printf(BG_RED "BG" COLOR_END " END\r\n"); // 2
printf(FG_RED BG_WHITE "FG&BG 1" COLOR_END " END\r\n"); // 3
printf(COLOR_L_RED "FG&BG 2" COLOR_END " END\r\n"); // 4
printf(COLOR_BOLD "BOLD" COLOR_END " END\r\n"); // 5
printf(COLOR_BLINK "BLINK" COLOR_END " END\r\n"); // 6
printf(COLOR_REVERSE "REVERSE" COLOR_END " END\r\n"); // 7
return 0;
}
코드 설명
- FG라는 텍스트 전에 글씨 색을 정의해주고, 텍스트가 끝나는 부분에서 색을 원래대로 돌려줍니다.
- BG라는 텍스트 전에 배경 색을 정의해주고 1과 마찬가지로 색을 원래대로 돌려줍니다.
- 이번에는 글씨 색과 배경 색을 함께 정의해주었습니다.
- 3과 같은 효과이지만 색을 정의해주는 정보의 양을 줄였습니다. 네트워크 통신에서는 비용을 조금이나마 절감할 수 있겠지요.
- 글씨 색 뿐 아니라 BOLD 효과도 줄 수 있습니다. 3의 방법과 마찬가지로 색과 함께 사용할 수도 있습니다.
- BLINK 효과인데 제 터미널에서는 지원을 하지 않아 사진에서는 보이지 않습니다.
- 색 반전도 사용할 수 있습니다.
참고 사이트
728x90