【shell-09】 shell控制台颜色输出

echo -e

    • 一.ASCII 编码表简介
      • 1.2 和换行符控制字符一样,终端颜色也有自己的十进制控制符
      • 1.3 颜色的写法
      • 1.4颜色参考图表
    • 二. rgb颜色模式
      • 2.1 怎么使用RGB颜色控制模式呢?
    • 三.256颜色表
      • 3.1怎么使用256颜色控制模式呢?
    • 四. 代码中输出颜色
    • 五.参考

一.ASCII 编码表简介

echo -e 的意思:如果字符串中出现某些特定的字符组合(转义字符),echo会将这些字符组合解释为特殊的含义,而不是将其作为普通文本输出。

ASCII 编码表,中前三十个左右都是控制字符,控制字符的意思是可以实现一些控制,比如换行等。
其中有一个字符是控制终端颜色的,十进制就是 27,ASCII还有两个字符:0 和x 表示转义字符,意思是0或是x后面紧跟的字符作用是实现控制,而不是直接输出。
比如:

echo -e "bbb \n aaa"  
echo -e "bbb \012 aaa"
echo -e "bbb \xA aaa"
上面三种的输出是一样的.
实际上\xA  和 \012 意思就是将十六进制的 A 和 八进制的12  转成了ASCII编码表对应的转义字符,也就是\n.

分析->这里的 \012 意思就是12这个数字是是实现做控制的,\0作为控制标志位,指的就是八进制,\012 用八进制实现的控制,实际上转成十进制就是->10 找到下图中,10对应的就是**\n**, 同理\x也是控制位标志符,指的是用十六进制, 10 的八进制是12,十六进制是 A
因此\012 和\xA 都是表示换行。

1.2 和换行符控制字符一样,终端颜色也有自己的十进制控制符

数字 27 对应的就是颜色中断控制。 我们想要控制的话就用: \033 或者\x1b 二者转成十进制都是 27 ,再通过ASCII编码表我们找到27对应的转义字符是:\e. 因此我们有如下结论:

echo -e "\033[32m 测试 \033[0m"
echo -e "\x1b[32m 测试 \033[0m"
echo -e "\e[32m 测试 \e[0m"

三种写法都一样,我们只分析八进制的写法吧:
1. \033 开启颜色渲染
2. [32m 是固定写法,意思背景色设为绿色, 此时你的shell终端字体背景色会一直是绿色
3. \033[0m 的意思是再次开终端颜色控制,颜色设为终端默认。这样就恢复原样了

分析:echo -e 的意思:如果字符串中出现某些特定的字符组合(转义字符),echo会将这些字符组合解释为特殊的含义,而不是将其作为普通文本输出。

1.3 颜色的写法

[SRG显示方式;前景色;背景色m

SRG参数用于控制样式
显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见

\033[1;31;40m    含义是:1->高亮显示 31->前景色红色  40->背景色黑色 m->颜色结束标志

1.4颜色参考图表

前景色: 30~37
背景色:40~47
【shell-09】 shell控制台颜色输出_第1张图片
一个例子:
前景色: 30~37
背景色:40~47

echo -e "\e[31;42m 测试  \e[0m"
echo -e "\e[31m 测试  \e[0m"  ->31 在{ 30~37 }范围内表示 前景色
echo -e "\e[42m 测试  \e[0m"  ->42 在{ 40~47 }范围内表示 背景色

【shell-09】 shell控制台颜色输出_第2张图片

除了上面直接用颜色参考表,还可以用rgb以及256颜色模式。下面分别讲解

二. rgb颜色模式

红,绿,蓝 就是RGB, 分别用0-255之间的数字表示颜色深浅, 这三个位数可以组合出很多种颜色。
网上有不少rgb颜色选择器,不需要我们自定义数字。比如:255;255;255 就表示一种颜色

2.1 怎么使用RGB颜色控制模式呢?

语法: ESC[ … 38;2;; ;

echo -e "\e[38;2;255;255;255m  测试 \e[0m "
echo -e "\e[48;2;255;255;255m  测试 \e[0m "
2->表示用rgb来表示颜色
38->前景色
48->表示背景色

三.256颜色表

【shell-09】 shell控制台颜色输出_第3张图片

256颜色模式和RGB颜色模式是两种不同的颜色表示方法,它们在颜色数量和表达方式上有所区别。

在256颜色模式中,颜色的数量是256种。这种模式通常用于早期的计算机图形和图像处理,因为它需要的颜色数量较少,计算速度快,但色彩表现相对有限。

相比之下,RGB颜色模式是一种更广泛使用的颜色表示方法,它使用红、绿、蓝三种基本颜色来混合出各种颜色。通过不同的组合方式,RGB颜色模式可以表示无数种颜色,因此在现代计算机图形和图像处理中应用广泛。

总体来说,256颜色模式和RGB颜色模式的主要区别在于颜色数量和表达方式。256颜色模式提供有限的256种颜色,适合早期的计算机图形和图像处理;而RGB颜色模式可以表示无数种颜色,在现代计算机图形和图像处理中更为常用。

3.1怎么使用256颜色控制模式呢?

语法:ESC[ … 38;5;数字

echo -e "\e[38;5;218m 测试 \e[0m"
echo -e "\e[48;5;218m 测试 \e[0m"
说明:
	38->表示前景色, 
	48->表示背景色 
	5->表示 这是用的256颜色规则  
	218->256颜色表表示粉色

【shell-09】 shell控制台颜色输出_第4张图片

四. 代码中输出颜色

  1. java

     System.out.println("\033[48;5;218m 测试 \033[0m");
    
  2. python

     print("\033[48;5;218m 测试 \033[0m");
    
  3. c++

    std::cout << "\033[1;31mI ♡  You \e[0m" << std::endl;
    

五.参考

控制台输出颜色控制

你可能感兴趣的:(shell,linux)