我们在编写程序的时候,通常需要终端对输出显示红色或者绿色等各种颜色,以便更加清楚的对用户做出提示。下面是Linux系统终端颜色的设置方式:
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,shell,python,perl, C, C++等均可以调用。 
转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, 等价于用八进制表示的 33)。 
显示格式:    \033[显示方式;前景色;背景色m 
其中显示方式,前景色或背景色无顺序关系,其中任何一项也不是必须的。
系统默认颜色:\033[0m
显示方式:0(默认)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显) 
前景色:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色) 
背景色:40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色) 
 
示范源代码:
-  
 -  
 -  
 -  
 -  
 -  
 -  
 -   
 - #include <stdio.h>  
 - #include <stdlib.h>  
 - #include <string.h>  
 -   
 -   
 - void set_term_default()  
 - {  
 -     fprintf(stdout, "\033[0m");  
 -     fflush(stdout);  
 - }  
 -   
 -   
 - void set_term_color(const char* msg, const char* fmt)  
 - {  
 -     char *pfmt = NULL;  
 -     pfmt = (char*)malloc(sizeof(fmt) + sizeof("\033[m"));  
 -       
 -     if(NULL == pfmt)  
 -     {  
 -         printf("Malloc error! File:%s, Line:%d\r\n", __FILE__, __LINE__);  
 -         return;  
 -     }  
 -     strcat(pfmt, "\033[");  
 -     strcat(pfmt, fmt);  
 -     strcat(pfmt, "m");  
 -       
 -     printf("Set Terminal Color to: \\033[%sm\r\n", fmt);  
 -     fprintf(stdout, pfmt);  
 -     printf(msg);  
 -     fflush(stdout);  
 -       
 -     free(pfmt);  
 - }  
 -   
 -   
 - int main()  
 - {  
 -       
 -     set_term_color("hello,world\r\n", "1;31;44");  
 -   
 -       
 -     set_term_default();  
 -     printf("hello,world\r\n");  
 -   
 -     return 0;  
 - }  
 
 
/******************************************************************************
Copyright by Javacode007, All rights reserved!
Filename    : setcolor.c
Author      : Javacode007
Date        : 2012-8-5
Version     : 1.0
Description : 设置Linux终端字符颜色
******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 设置终端为系统默认显示 */
void set_term_default()
{
    fprintf(stdout, "\033[0m");
    fflush(stdout);
}
/* 设置终端显示方式*/
void set_term_color(const char* msg, const char* fmt)
{
    char *pfmt = NULL;
    pfmt = (char*)malloc(sizeof(fmt) + sizeof("\033[m"));
    
    if(NULL == pfmt)
    {
        printf("Malloc error! File:%s, Line:%d\r\n", __FILE__, __LINE__);
        return;
    }
    strcat(pfmt, "\033[");
    strcat(pfmt, fmt);
    strcat(pfmt, "m");
    
    printf("Set Terminal Color to: \\033[%sm\r\n", fmt);
    fprintf(stdout, pfmt);
    printf(msg);
    fflush(stdout);
    
    free(pfmt);
}
int main()
{
    /* 设置终端字体显示为红色高亮,背景色为蓝色*/
    set_term_color("hello,world\r\n", "1;31;44");
    /* 恢复终端字体的系统默认显示*/
    set_term_default();
    printf("hello,world\r\n");
    return 0;
}
 
输出效果如下:

Linux 终端字符颜色设置
原文:http://blog.csdn.net/thomashtq/article/details/45036949