[转帖]Shell~echo -e 颜色输出

shell,echo,颜色,输出 · 浏览次数 : 0

小编点评

# 1.定义颜色变量 ```vim 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 ``` # 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)引用变量要放到其他语句前面,并使用&&连接。 ``` # 3.使用时直接调用颜色动作 ```vim color_test1.sh 定义颜色变量,\\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 ``` # 4.tput命令 ```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)引用变量要放到其他语句前面,并使用&&连接。

正文

https://www.cnblogs.com/ElegantSmile/p/11144879.html

 

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 -e 颜色输出相似的内容:

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /

[转帖]Windows Server 2022 简体中文版、英文版下载 (updated Oct 2022)

https://sysin.org/blog/windows-server-2022/ Windows Server 2022 正式版,2022 年 10 月更新,VLSC Posted by sysin on 2022-10-27 Estimated Reading Time 8 Minutes

[转帖]API架构风格对比:SOAP vs REST vs GraphQL vs RPC

https://www.cnblogs.com/charlieroro/p/14570214.html 最近一段时间关于GraphQL的讨论很多,一些项目中也相继用到了这种风格,但使用是否合理,是否存在杀鸡用牛刀这样的问题,还有待商榷。 译自:Comparing API Architectural