shell echo 控制字体与字体背景颜色

Posted peak wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell echo 控制字体与字体背景颜色相关的知识,希望对你有一定的参考价值。

echo -e 可以控制字体颜色和背景颜色输出

 从一个例子开始:

# echo -e "\\e[1;33;41m test content \\e[0m"

输出效果:

1. \\e 转义起始符,定义一个转义序列, 可以使用 \\033代替
2. [ 表示开始定义颜色
3. 1表示高亮,33表示字体颜色为黄色,45表示背景色为红色
4. “test content” 属于文字内容
5. m 转义终止符,表示颜色定义完毕
6. 再次使用 \\e[ ,表示再次开启颜色定义,0表示使用默认的颜色,m表示颜色定义结束,所以 \\e[0m 的作用是恢复之前的配色方案

一、字体颜色

字体颜色:30——37

默认=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,紫色=35,天蓝色=36,白色=3

[root@k8s-node02 test]# echo -e "\\e[30m test content黑 \\e[0m"
 test content黑 
[root@k8s-node02 test]# echo -e "\\e[31m test content红 \\e[0m"
 test content红 
[root@k8s-node02 test]# echo -e "\\e[32m test content绿 \\e[0m"
 test content绿 
[root@k8s-node02 test]# echo -e "\\e[33m test content黄 \\e[0m"
 test content黄 
[root@k8s-node02 test]# echo -e "\\e[34m test content蓝 \\e[0m"
 test content蓝 
[root@k8s-node02 test]# echo -e "\\e[35m test content紫 \\e[0m"
 test content紫 
[root@k8s-node02 test]# echo -e "\\e[36m test content天蓝 \\e[0m"
 test content天蓝 
[root@k8s-node02 test]# echo -e "\\e[37m test content白 \\e[0m"
 test content白

输出效果:

二、字背景颜色

字背景颜色:40——47

默认=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,紫色=45,天蓝色=46,白色=47

[root@k8s-node02 test]# echo -e "\\e[40m test content黑 \\e[0m"
 test content黑 
[root@k8s-node02 test]# echo -e "\\e[41m test content红 \\e[0m"
 test content红 
[root@k8s-node02 test]# echo -e "\\e[42m test content绿 \\e[0m"
 test content绿 
[root@k8s-node02 test]# echo -e "\\e[43m test content黄 \\e[0m"
 test content黄 
[root@k8s-node02 test]# echo -e "\\e[44m test content蓝 \\e[0m"
 test content蓝 
[root@k8s-node02 test]# echo -e "\\e[45m test content紫 \\e[0m"
 test content紫 
[root@k8s-node02 test]# echo -e "\\e[46m test content天蓝 \\e[0m"
 test content天蓝 
[root@k8s-node02 test]# echo -e "\\e[47m test content白 \\e[0m"
 test content白 

 输出效果:

三、黑底彩色

黑底彩色:90——97


黑=90 深红=91 绿=92 黄色=93 蓝色=94 紫色=95 深绿=96 白色=97
 

[root@k8s-node02 test]# echo -e "\\e[90m test content黑 \\e[0m"
 test content黑 
[root@k8s-node02 test]# echo -e "\\e[91m test content红 \\e[0m"
 test content红 
[root@k8s-node02 test]# echo -e "\\e[92m test content绿 \\e[0m"
 test content绿 
[root@k8s-node02 test]# echo -e "\\e[93m test content黄 \\e[0m"
 test content黄 
[root@k8s-node02 test]# echo -e "\\e[94m test content蓝 \\e[0m"
 test content蓝 
[root@k8s-node02 test]# echo -e "\\e[95m test content紫 \\e[0m"
 test content紫 
[root@k8s-node02 test]# echo -e "\\e[96m test content天蓝 \\e[0m"
 test content天蓝 
[root@k8s-node02 test]# echo -e "\\e[97m test content白 \\e[0m"
 test content白

输出结果:

四、字体控制选项:

\\033[0m 关闭所有属性

\\033[1m  设置高亮度

\\033[4m  下划线

\\033[5m  闪烁

\\033[7m  反显,撞色显示,显示为白色黑底,或者显示为黑底白字

\\033[8m  消影,字符颜色将会与背景颜色相同

\\033[nA 光标上移n行

\\033[nB 光标下移n行

\\033[nC 光标右移n行

\\033[nD 光标左移n行

\\033[y;xH 设置光标位置

\\033[2J 清屏

\\033[K 清除从光标到行尾的内容

\\033[s 保存光标位置

\\033[u 恢复光标位置

\\033[?25l 隐藏光标

\\033[?25h 显示光标

五、实例演示

1.示例1:定义颜色变量

# vim color_test1.sh

#!/bin/bash
# 定义颜色变量,\\033、\\e、\\E是等价的,都是转义起始符
RED='\\e[1;31m'  # 红
GREEN='\\e[1;32m'  # 绿
YELLOW='\\033[1;33m'  # 黄
BLUE='\\E[1;34m'  # 蓝
PINK='\\E[1;35m'  # 粉红
RES='\\033[0m'  # 清除颜色


echo -e "$RED Red $RES"
echo -e "$YELLOW Yellow $RES"
echo -e "$BLUE Blue $RES"
echo -e "$GREEN Green $RES"
echo -e "$PINK Pink $RES"

# source color_test1.sh

 2.示例2:定义颜色动作

# vim color_test2.sh

#!/bin/bash
# 定义颜色动作
SETCOLOR_SUCCESS="echo -en \\\\E[1;32m"
SETCOLOR_FAILURE="echo -en \\\\E[1;31m"
SETCOLOR_WARNING="echo -en \\\\E[1;33m"
SETCOLOR_NORMAL="echo -en  \\\\E[0;39m"
 
# 使用时直接调用颜色动作,跟上相应的内容
$SETCOLOR_SUCCESS && echo test1   
$SETCOLOR_FAILURE && echo test2   
$SETCOLOR_WARNING && echo test3   
$SETCOLOR_NORMAL  && echo test4

需要注意其中的一些细节:

(1)需要增加-n选项,这样引用时不会出现换行的问题。
(2)\\\\本质是\\,在双引号中反斜线符号一定要写成\\\\。
(3)引用变量要放到其他语句前面,并使用&&连接。

# source color_test2.sh

 

六、tput命令

tput 命令会利用 terminfo 数据库中的信息,来控制和更改我们的终端,比如控制光标、更改文本属性、控制屏幕,以及为文本涂色。

其中,为文本涂色的方法是:

1 tput setab:用于设置背景色
2 tput setaf:用于设置前景色
3 sgr0:表示颜色重置

颜色定义如下:

改写 实例演示中的 color_test1.sh

#!/bin/bash
# 定义颜色变量,\\033、\\e、\\E是等价的,都是转义起始符
RED=$(tput setaf 1)  # 红
GREEN=$(tput setaf 2)  # 绿
YELLOW=$(tput setaf 3) # 黄
BLUE=$(tput setaf 4)  # 蓝
PINK=$(tput setaf 5)  # 粉红
RES=$(tput sgr0)  # 清除颜色


echo -e "$RED Red $RES"
echo -e "$YELLOW Yellow $RES"
echo -e "$BLUE Blue $RES"
echo -e "$GREEN Green $RES"
echo -e "$PINK Pink $RES"

# source color_test1.sh

以上是关于shell echo 控制字体与字体背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

Shell 显示带颜色字体

Shell 显示带颜色字体

Linux echo命令定义字体和背景颜色

shell脚本 echo命令的颜色显示

shell 脚本 编辑颜色代码

Shell字体颜色