Linuxのターミナルにて、C言語の出力に色を付ける


このエントリーをはてなブックマークに追加

Linuxのターミナルにて、C言語の出力に色を付ける方法。c - Making some text in printf appear in green and red - Stack Overflowより。Windowsだとうまくいかないはず。

#define RESET   "\033[0m"
#define BLACK   "\033[30m"      /* Black */
#define RED     "\033[31m"      /* Red */
#define GREEN   "\033[32m"      /* Green */
#define YELLOW  "\033[33m"      /* Yellow */
#define BLUE    "\033[34m"      /* Blue */
#define MAGENTA "\033[35m"      /* Magenta */
#define CYAN    "\033[36m"      /* Cyan */
#define WHITE   "\033[37m"      /* White */
#define BOLDBLACK   "\033[1m\033[30m"      /* Bold Black */
#define BOLDRED     "\033[1m\033[31m"      /* Bold Red */
#define BOLDGREEN   "\033[1m\033[32m"      /* Bold Green */
#define BOLDYELLOW  "\033[1m\033[33m"      /* Bold Yellow */
#define BOLDBLUE    "\033[1m\033[34m"      /* Bold Blue */
#define BOLDMAGENTA "\033[1m\033[35m"      /* Bold Magenta */
#define BOLDCYAN    "\033[1m\033[36m"      /* Bold Cyan */
#define BOLDWHITE   "\033[1m\033[37m"      /* Bold White */

#include <stdio.h>

int main(){
    printf( GREEN "Here is some text\n" RESET );
    printf( BOLDCYAN "Here is some text\n" RESET );

    return 0;
}

結果は以下。(Cygwinで確認)

f:id:minus9d:20140409000556p:plain

しかし何でこれでうまくいくのかよくわからない。コンソールに色が付く詳しい仕組みについてBash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作に解説があるが、上記C言語のサンプルとは少し記号の使い方が違っている。

参考