Programing

UNIX에서 터미널 응용 프로그램의 색상 텍스트

lottogame 2020. 8. 18. 08:09
반응형

UNIX에서 터미널 응용 프로그램의 색상 텍스트


이 질문에 이미 답변이 있습니다.

저는 vi와 같은 최초의 UNIX 용 텍스트 편집기와 같은 터미널 텍스트 편집기를 작성하기 시작했습니다. 나의 유일한 목표는 즐거운 시간을 보내는 것이지만 텍스트를 컬러로 표시 할 수 있기를 원하므로 소스 코드 편집을 위해 구문 강조 표시를 할 수 있습니다.

이것을 어떻게 할 수 있습니까? 이를위한 특별한 POSIX API가 있습니까, 아니면 ncurses를 사용해야합니까? (차라리)

어떤 충고? 아마도 UNIX API에 대한 교과서일까요?


다음은 색상 코드를 사용하는 방법을 보여주는 작은 C 프로그램입니다.

#include <stdio.h>

#define KNRM  "\x1B[0m"
#define KRED  "\x1B[31m"
#define KGRN  "\x1B[32m"
#define KYEL  "\x1B[33m"
#define KBLU  "\x1B[34m"
#define KMAG  "\x1B[35m"
#define KCYN  "\x1B[36m"
#define KWHT  "\x1B[37m"

int main()
{
    printf("%sred\n", KRED);
    printf("%sgreen\n", KGRN);
    printf("%syellow\n", KYEL);
    printf("%sblue\n", KBLU);
    printf("%smagenta\n", KMAG);
    printf("%scyan\n", KCYN);
    printf("%swhite\n", KWHT);
    printf("%snormal\n", KNRM);

    return 0;
}

여기에 다른 방법이 있습니다. 어떤 사람들은 코드가 조금 더 깨끗하기 때문에 이것을 선호 할 것입니다 ( 색상을 끝내기 %s위한 RESET색상 이 없습니다 ).

#include <stdio.h>

#define RED   "\x1B[31m"
#define GRN   "\x1B[32m"
#define YEL   "\x1B[33m"
#define BLU   "\x1B[34m"
#define MAG   "\x1B[35m"
#define CYN   "\x1B[36m"
#define WHT   "\x1B[37m"
#define RESET "\x1B[0m"

int main()
{
  printf(RED "red\n" RESET);
  printf(GRN "green\n" RESET);
  printf(YEL "yellow\n" RESET);
  printf(BLU "blue\n" RESET);
  printf(MAG "magenta\n" RESET);
  printf(CYN "cyan\n" RESET);
  printf(WHT "white\n" RESET);

  return 0;
}

This way, it's easy to do something like:

printf("This is " RED "red" RESET " and this is " BLU "blue" RESET "\n");

You probably want ANSI color codes. Most *nix terminals support them.


Use ANSI escape sequences. This article goes into some detail about them. You can use them with printf as well.

참고URL : https://stackoverflow.com/questions/3585846/color-text-in-terminal-applications-in-unix

반응형