linux 终端输出颜色

在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。

终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。

转义序列以控制字符‘ESC‘开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以‘ESC‘和左括号‘[‘开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由‘\033[‘或‘\e[‘代替。

通过转义序列设置终端显示属性时,可采用以下格式:

\033[ Param {;Param;...}m 或 \e[ Param {;Param;...}m

其中,‘\033[‘或‘\e[‘引导转义序列,‘m‘表示设置属性并结束转义序列。Param为属性值,{...}表示可选(多个参数之间用分号隔开,与顺序无关)。

注意,转义序列可被控制字符‘CAN‘(Cancel )和‘SUB‘(Substitute)中断。

转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):

显示:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)

颜色:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)

前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。

调色效果如下图所示:

因此,通过转义序列设置终端显示属性时,常见格式为:

\033[显示方式;前景色;背景色m输出字符串\033[0m 或 \e[显示方式;前景色;背景色m输出字符串\033[0m

此外,还有一些ANSI控制码,如:nA (光标上移n行 )、nB(光标下移n行 )、nC(光标右移n行 )、nD (光标左移n行 )、2J(清屏)、K(清除从光标到行尾的内容)、s(保存光标位置)、u(恢复光标位置)、?25l(隐藏光标)、?25l(显示光标)。     其中 ,‘\033[0m‘用于恢复默认的终端输出属性,否则会影响后续的输出。

基于常用参数,可定义如下单一控制宏,用于printf系列语句:

 1 #define NONE                 "\e[0m"
 2 #define BLACK                "\e[0;30m"
 3 #define L_BLACK              "\e[1;30m"
 4 #define RED                  "\e[0;31m"
 5 #define L_RED                "\e[1;31m"
 6 #define GREEN                "\e[0;32m"
 7 #define L_GREEN              "\e[1;32m"
 8 #define BROWN                "\e[0;33m"
 9 #define YELLOW               "\e[1;33m"
10 #define BLUE                 "\e[0;34m"
11 #define L_BLUE               "\e[1;34m"
12 #define PURPLE               "\e[0;35m"
13 #define L_PURPLE             "\e[1;35m"
14 #define CYAN                 "\e[0;36m"
15 #define L_CYAN               "\e[1;36m"
16 #define GRAY                 "\e[0;37m"
17 #define WHITE                "\e[1;37m"
18
19 #define BOLD                 "\e[1m"
20 #define UNDERLINE            "\e[4m"
21 #define BLINK                "\e[5m"
22 #define REVERSE              "\e[7m"
23 #define HIDE                 "\e[8m"
24 #define CLEAR                "\e[2J"25 #define CLRLINE              "\r\e[K" //or "\e[1K\r"

编写测试代码验证转义序列控制的效果:

 1 int main(void)
 2 {
 3     printf("This is a character control test!\n" );
 4     sleep(3);
 5     printf("[%2u]" CLEAR "CLEAR\n" NONE, __LINE__);
 6
 7     printf("[%2u]" BLACK "BLACK " L_BLACK "L_BLACK\n" NONE, __LINE__);
 8     printf("[%2u]" RED "RED " L_RED "L_RED\n" NONE, __LINE__);
 9     printf("[%2u]" GREEN "GREEN " L_GREEN "L_GREEN\n" NONE, __LINE__);
10     printf("[%2u]" BROWN "BROWN " YELLOW "YELLOW\n" NONE, __LINE__);
11     printf("[%2u]" BLUE "BLUE " L_BLUE "L_BLUE\n" NONE, __LINE__);
12     printf("[%2u]" PURPLE "PURPLE " L_PURPLE "L_PURPLE\n" NONE, __LINE__);
13     printf("[%2u]" CYAN "CYAN " L_CYAN "L_CYAN\n" NONE, __LINE__);
14     printf("[%2u]" GRAY "GRAY " WHITE "WHITE\n" NONE, __LINE__);
15
16     printf("[%2u]\e[1;31;40m Red \e[0m\n",  __LINE__);
17
18     printf("[%2u]" BOLD "BOLD\n" NONE, __LINE__);
19     printf("[%2u]" UNDERLINE "UNDERLINE\n" NONE, __LINE__);
20     printf("[%2u]" BLINK "BLINK\n" NONE, __LINE__);
21     printf("[%2u]" REVERSE "REVERSE\n" NONE, __LINE__);
22     printf("[%2u]" HIDE "HIDE\n" NONE, __LINE__);
23
24     printf("Cursor test begins!\n" );
25     printf("=======!\n" );
26     sleep(10);
27     printf("[%2u]" "\e[2ACursor up 2 lines\n" NONE, __LINE__);
28     sleep(10);
29     printf("[%2u]" "\e[2BCursor down 2 lines\n" NONE, __LINE__);
30     sleep(5);
31     printf("[%2u]" "\e[?25lCursor hide\n" NONE, __LINE__);
32     sleep(5);
33     printf("[%2u]" "\e[?25hCursor display\n" NONE, __LINE__);
34     sleep(5);
35
36     printf("Test ends!\n" );
37     sleep(3);
38     printf("[%2u]" "\e[2ACursor up 2 lines\n" NONE, __LINE__);
39     sleep(5);
40     printf("[%2u]" "\e[KClear from cursor downward\n" NONE, __LINE__);
41
42     return 0 ;
43 }

执行结果截图如下:

时间: 2024-09-30 10:36:51

linux 终端输出颜色的相关文章

Linux 终端字符颜色设置

我们在编写程序的时候,通常需要终端对输出显示红色或者绿色等各种颜色,以便更加清楚的对用户做出提示.下面是Linux系统终端颜色的设置方式: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,shell,python,perl, C, C++等均可以调用. 转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, 等价于用八进制表示的 33). 显示格式:    \033[显示方式;前景色;背景色m 其中显示方式

修改Linux终端提示符颜色

修改Linux终端提示符颜色 [[email protected] ~]# tail -1 .bashrc PS1='[\[\033[1;31m\]\u\[\033[0m\]@\[\033[1;32m\]\h \[\033[1;36m\]\w\[\033[0m\]]# ' [[email protected] ~]# source .bashrc [[email protected] ~]# 原文地址:https://www.cnblogs.com/zhouwanchun/p/10679342.

通过printf设置Linux终端输出的颜色和显示方式

前言 在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据. 终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关. 本文简要介绍C语言中通过printf改变终端输出的颜色和显示方式.文中涉及的代码运行环境如下: 正文 转义序列以控制字符'ESC'开头.该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033.多数转义序列超过两个字符,故通常以'ES

控制台终端输出颜色

在使用putty.secureCRT.XShell等终端仿真器连接linux系统时,ls.vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性. 一.终端文本颜色输出的一般示例 在bash中,通常我们可以使用echo命令加-e选项输出各种颜色的文本,例如: echo -e "\033[31mRed Text\033[0m"echo -e "\033[32mGreen Text\033[0m"echo -e "\033[33mYellow

Linux 终端下颜色的输出

在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如 echo -e "\033[41;36m 红底绿字\033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色    那些ascii code 是对颜色调用的始末.    \033[ ; m …… \033[0m    字背景颜色范围:40----49    40:黑    41:深红    42:绿    43:黄色    44:蓝色    45:紫色    46:深绿    47:白色    字颜色:30

Linux终端提示符颜色设置

将以下语句添加到用户目录下的 .bashrc 文件中,然后执行 source .bashrc 使其立即生效. PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$' 标识符列表:<常用的>\u :当前用户的账号名称\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略\H :完整的主机名称.例如:

SecureCRT设置linux终端显示颜色

在linux系统上,我们使用终端时,对于文件或目录会显示不同的颜色.而SecureCRT默认显示的颜色是单一的,我们该如何让其像linux一样显示个性化颜色呢. 使用SecureCRT登录 linux的用户上. 检查vim-enhanced 是否安装. rpm -qa | grep vim-enhanced 第二步,选项-->会话选项 设置完成后,重新连接linux用户,字体颜色已发生变化 原文地址:https://www.cnblogs.com/ftl1012/p/SecureCRT.html

Linux?终端下的颜色

Linux 终端下颜色的输出 在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如 echo -e "\033[41;36m 红底绿字\033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色    那些ascii code 是对颜色调用的始末.    \033[ ; m -- \033[0m    字背景颜色范围:40----49    40:黑    41:深红    42:绿    43:黄色    44:蓝色    45:紫色    46:深绿    

linux终端terminal个性化配置(转)

http://blog.csdn.net/pipisorry/article/details/39584489 {本文介绍Linux终端字体颜色设置.终端提示符显示内容设置.自定义alias命令} linux打开终端快捷键: ctrl + alt + t  新窗口中打开 ctrl + shift +t 新标签页中打开 个人配置文件介绍 系统默认状态下的终端显示为紫底白字(皮皮的linux为ubuntu 14.04 LTS) 在没有经过自定义配置的终端下因为所有输入输出都是一个颜色(ls命令除外)