콘솔창에 출력되는 글자를 알록달록 이쁘게 만들고 싶은데 방법이 없을까?
Shell을 자주 사용했거나 Makefile좀 꾸며본 사람이라면 C언어에서도 무리없이 할 수 있을 것이다.
바로 ANSI Color를 사용하면 간단하게 표현할 수 있다!
printf에 넘길 문자열에 Escape code와 color code를 전달하면 끝!
•
Escape : \033
•
Color code : [0;31m
이제 원하는 색을 표현하고 싶은 곳 앞에 원하는 색상을 표기해주면 된다.
printf(“\033[0;31m”); // Set the text to the color red
printf(“Hello\n”); // Display Hello in red
printf(“\033[0m”); // Resets the text to default color
C
복사
물론 위의 코드를 합쳐서 쓸 수도 있다.
printf("\033[0;31mHello\n\033[0m");
C
복사
어떤 색상이 있는지 아래를 참고해보자!
Black : \033[0;30m
Red : \033[0;31m
Green : \033[0;32m
Yellow : \033[0;33m
Blue : \033[0;34m
Purple : \033[0;35m
Cyan : \033[0;36m
White : \033[0;37m
C
복사
그런데 하나하나 체크해서 색을 변경해 주는 것은 너무나 귀찮다... 우리는 개발자니까 조금 더 머리를 써보자
컴파일 단계에서 처리해 주는게 아니라 콘솔에서 해당 Escape code를 처리하는 거라면 숫자에 변수를 넣어도 되지 않을까?
바로 시도해보자
char text[8] = {'a','b','c','d','e','f','g','h'};
for (int i = 0 ; i < 8 ; ++i) {
printf("\033[0;3%dm%c", i, text[i]);
}
C
복사
기가막히게 잘 나오는 것을 알 수 있다.
이제 이걸 minishell에 적용해보자..ㅎㅎ
콘솔 입력 부분도 마지막 디렉토리 color code + 1 색상을 적용해서 디렉토리 개수에 따라 다른 색이 나오게 하였다.