标签归档:彩色

Linux终端彩色文字输出

1. 格式

echo "\033[字背景颜色;字体颜色m字符串\033[0m"

例如:

echo "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的颜色

那些ascii code 是对颜色调用的始末.
\033[ ; m …… \033[0m

2.颜色

字背景颜色范围:40-49 字颜色范围:30-39
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

3.ANSI控制码的说明

\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m – \33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

代码演示:

#include <stdio.h>

int main(int argc,char **argv)
{
    printf(“\033[31m The ……\n\033[0m”);
    printf(“\033[2;7;1mHEOO.\n\033[2;7;0m”);
    printf(“\033[41;36msomthe here\n\033[0m”);
    return 0;
}

printf 打印颜色

引言: 控制字符的通用格式如下:

Esc[{attr1};…;{attrn}m
其中: Esc 是转义字符, 其值为”\033″;
[ 是常量的左中括号;
{attr1};…{attrn} 是若干属性, 通常是由一个有特定意义的数字代替, 每个属性之间用分号分隔;
m 就是字面常量字符m, 结束标志

属性列表如下:
>>1. 通用格式控制:
0 重置所有属性
1 高亮/加粗
2 暗淡
4 下划线
5 闪烁
7 反转
8 隐藏

>>2. 前景色:
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 品红
36 青色
37 白色

>>3. 背景色:
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 品红
46 青色
47 白色
头文件1:

/* font color */
#define NONE            "\e[0m"         /* default */
#define BLACK           "\e[0;30m"      /* black */
#define L_BLACK         "\e[1;30m"      /* light black */
#define RED             "\e[0;31m"      /* red */
#define L_RED           "\e[1;31m"      /* light red */
#define GREEN           "\e[0;32m"      /* green */
#define L_GREEN         "\e[1;32m"      /* light green */
#define BROWN           "\e[0;33m"      /* brown */
#define YELLOW          "\e[1;33m"      /* yellow */
#define BLUE            "\e[0;34m"      /* blue */
#define L_BLUE          "\e[1;34m"      /* light blue */
#define PURPLE          "\e[0;35m"      /* purple */
#define L_PURPLE        "\e[1;35m"      /* light purple */
#define CYAN            "\e[0;36m"      /* cyan */
#define L_CYAN          "\e[1;36m"      /* light_cyan */
#define GRAY            "\e[0;37m"      /* gray */
#define WHITE           "\e[1;37m"      /* white */

/* background color*/
#define BG_BLACK        "\e[40m"        /* black background */
#define BG_RED          "\e[41m"        /* red background */
#define BG_GREEN        "\e[42m"        /* green background */
#define BG_YELLOW       "\e[43m"        /* yellow background */
#define BG_BLUE         "\e[44m"        /* blue background */
#define BG_CYAN         "\e[45"         /* cyan background */
#define BG_L_CYAN       "\e[46"         /* light cyan background */
#define BG_WHITE        "\e[47"         /* white background */

/* font attribure */
#define BOLD            "\e[1m"         /* blod/light */
#define UNDERLINE       "\e[4m"         /* underline */
#define BLINK           "\e[5m"         /* blink */
#define REVERSE         "\e[7m"         /* reverse */
#define HIDE            "\e[8m"         /* hide */
#define CLEAR           "\e[2J"         /* clear */
#define CLRLINE         "\r\e[K"        //or "\e[1K\r clear line "

头文件2:

/* cprint.h
 * color print
 */

/* font attribute */
#define NONE            "\e[0m"         /* defaults */
#define BOLD            "\e[1m"         /* blod */
#define H_BRIGHT        "\e[2m"         /* half-bright */
#define UNDERLINE       "\e[4m"         /* underscore */
#define BLINK           "\e[5m"         /* blink */
#define REVERSE         "\e[7m"         /* reverse video */
#define HIDE            "\e[8m"         /* hide */
#define DOUBLE_UNDERLINE "\e[21m"       /* doubly underline */
#define INTERSITY       "\e[22m"        /* intensity */
#define UNDERLINE_OFF   "\e[24m"        /* underline off */
#define BLINK_OFF       "\e[25m"        /* blink off */
#define REVERSE_OFF     "\e[27m"        /* reverse video off */
#define CLEAR           "\e[2j"         /* clear */
#define CLRLINE         "\r\e[k"        /* or "\e[1k[r clear line" */

/* foreground color */
#define BLACK           "\e[30m"        /* black foreground */
#define RED             "\e[31m"        /* red foreground */
#define GREEN           "\e[32m"        /* green foreground */
#define BROWN           "\e[33m"        /* brown foreground */
#define YELLOW          "\e[33m"
#define BLUE            "\e[34m"        /* blue foreground */
#define MAGENTA         "\e[35m"        /* magenta foreground */
#define CYAN            "\e[36m"        /* cyan foreground */
#define WHITE           "\e[37m"        /* white foreground */
#define COLOR           "\e[39m"        /* default foreground */

/* background color*/
#define BG_BLACK        "\e[40m"        /* black background */
#define BG_RED          "\e[41m"        /* red background */
#define BG_GREEN        "\e[42m"        /* green background */
#define BG_BROWN        "\e[43m"        /* brown background */
#define BG_YELLOW       "\e[43m"
#define BG_BLUE         "\e[44m"        /* blue background */
#define BG_MAGENTA      "\e[45m"        /* magenta background */
#define BG_CYAN         "\e[46m"        /* cyan background */
#define BG_WHITE        "\e[47m"        /* white background */
#define BG_COLOR        "\e[49m"        /* defaulte background */

正文, 如何使用printf函数在控制台彩色打印

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