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 消影,隐藏 scanf 输入的字符
\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