Linux 终端字符颜色设置

我们在编写程序的时候,通常需要终端对输出显示红色或者绿色等各种颜色,以便更加清楚的对用户做出提示。下面是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(白色)

 

示范源代码:

  1. /****************************************************************************** 
  2. Copyright by Javacode007, All rights reserved! 
  3. Filename    : setcolor.c 
  4. Author      : Javacode007 
  5. Date        : 2012-8-5 
  6. Version     : 1.0 
  7. Description : 设置Linux终端字符颜色 
  8. ******************************************************************************/  
  9. #include <stdio.h>  
  10. #include <stdlib.h>  
  11. #include <string.h>  
  12.   
  13. /* 设置终端为系统默认显示 */  
  14. void set_term_default()  
  15. {  
  16.     fprintf(stdout, "\033[0m");  
  17.     fflush(stdout);  
  18. }  
  19.   
  20. /* 设置终端显示方式*/  
  21. void set_term_color(const char* msg, const char* fmt)  
  22. {  
  23.     char *pfmt = NULL;  
  24.     pfmt = (char*)malloc(sizeof(fmt) + sizeof("\033[m"));  
  25.       
  26.     if(NULL == pfmt)  
  27.     {  
  28.         printf("Malloc error! File:%s, Line:%d\r\n", __FILE__, __LINE__);  
  29.         return;  
  30.     }  
  31.     strcat(pfmt, "\033[");  
  32.     strcat(pfmt, fmt);  
  33.     strcat(pfmt, "m");  
  34.       
  35.     printf("Set Terminal Color to: \\033[%sm\r\n", fmt);  
  36.     fprintf(stdout, pfmt);  
  37.     printf(msg);  
  38.     fflush(stdout);  
  39.       
  40.     free(pfmt);  
  41. }  
  42.   
  43.   
  44. int main()  
  45. {  
  46.     /* 设置终端字体显示为红色高亮,背景色为蓝色*/  
  47.     set_term_color("hello,world\r\n""1;31;44");  
  48.   
  49.     /* 恢复终端字体的系统默认显示*/  
  50.     set_term_default();  
  51.     printf("hello,world\r\n");  
  52.   
  53.     return 0;  
  54. }  

 


输出效果如下:

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。