shell中设置文字输出的颜色及字体格式
1、Linux中设置文本颜色及背景色
Shell 使用 ANSI 转义码 (ANSI escape codes) 进行颜色输出。转义序列颜色输出表如下
颜色 |
前景色 |
背景色 |
黑色 (Black) |
30 |
40 |
红色 (Red) |
31 |
41 |
绿色 (Green) |
32 |
42 |
××× (Yellow) |
33 |
43 |
蓝色 (Blue) |
34 |
44 |
紫红色 (Magenta) |
35 |
45 |
青色 (Cyan) |
36 |
46 |
白色 (White) |
37 |
47 |
echo -e "\033[颜色值m 文本"
这句代码中\033[ 作为转义序列的开始,你也可以使用 "\e[" 颜色值处设定前景色值。m 终止转义序列,后面紧跟着就是生效的文本。echo 需要 -e 来开启转义序列。可以用 printf 代替 echo。
printf "\e[颜色值m 文本\n"
2、shell中设置字体颜色及背景实例
例1:打印蓝色文本(两种方法)
echo -e "\033[34m Hello World"
printf "\e[34m Hello World\n"
但是这样执行之后,会使得其后面的文本输出都是蓝色,连命令提示符都是蓝色。要使其返回颜色使用 \033[0m。
使用不同的转义序列组合来达到不同的效果,如下面加上背景色的显示:
echo -e "\033[前景色值;背景色值m 文本\033[0m"
前景色值和背景色值使用分号间隔,不分先后,因为两种值的颜色范围不一样,比如 黑色 30 40 。另外分开写同样生效,如 \033[44m\033[32m
3、Linux中设置字体属性(加粗、闪烁、下划线等)
转义序列还可以设置文本在显示屏上显示的方式,如是否加粗等,如下表:
ANSI 码 |
含义 |
0 |
常规文本 |
1 |
粗体文本 |
4 |
含下划线文本 |
5 |
闪烁文本 |
7 |
反色(补色)文本 |
加粗属性合并后,有些变化。如下表:
关闭加粗 |
颜色 |
开启加粗 |
颜色 |
0;30 |
黑 (Black) |
1;30 |
深灰 (Dark Gray) |
0;31 |
红 (Red) |
1;31 |
深红 (Dark Red) |
0;32 |
绿 (Green) |
1;32 |
深绿 (Dark Green) |
0;33 |
黄 (Yellow) |
1;33 |
亮黄 (Yellow) |
0;34 |
蓝 (Blue) |
1;34 |
深蓝 (Dark Blue) |
0;35 |
紫红 (Magenta) |
1;35 |
暗紫红 (Dark Magenta) |
0;36 |
青 (Cyan) |
1;36 |
深青 (Dark Cyan) |
0;37 |
浅 灰 (White) |
1;37 |
白 (White) |
特效可以叠加,需要使用“;”隔开,例如:闪烁+下划线+白底色+黑字为 \033[5;4;47;30m闪烁+下划线+白底色+黑字为\033[0m
4、shell脚本实现各种字体颜色及背景设置
#!/bin/bash
#
#下面是字体输出颜色及终端格式控制
#字体色范围:30-37
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m ×××字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
#字背景颜色范围:40-47
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;30m 红底黑字 \033[0m"
echo -e "\033[42;34m 绿底蓝字 \033[0m"
echo -e "\033[43;34m 黄底蓝字 \033[0m"
echo -e "\033[44;30m 蓝底黑字 \033[0m"
echo -e "\033[45;30m 紫底黑字 \033[0m"
echo -e "\033[46;30m 天蓝底黑字 \033[0m"
echo -e "\033[47;34m 白底蓝字 \033[0m"
#控制选项说明
#\033[0m 关闭所有属性
#\033[1m 设置高亮度
#\033[4m 下划线
echo -e "\033[4;31m 下划线红字 \033[0m"
#闪烁
echo -e "\033[5;34m 红字在闪烁 \033[0m"
#反影
echo -e "\033[8m 消隐 \033[0m "
#\033[30m-\033[37m 设置前景色
#\033[40m-\033[47m 设置背景色
#\033[nA光标上移n行
#\033[nB光标下移n行
echo -e "\033[4A 光标上移4行 \033[0m"
#\033[nC光标右移n行
#\033[nD光标左移n行
#\033[y;xH设置光标位置
#\033[2J清屏
#\033[K清除从光标到行尾的内容
echo -e "\033[K 清除光标到行尾的内容 \033[0m"
#\033[s 保存光标位置
#\033[u 恢复光标位置
#\033[?25| 隐藏光标
#\033[?25h 显示光标
echo -e "\033[?25l 隐藏光标 \033[0m"
echo -e "\033[?25h 显示光标 \033[0m"
5、使用echo让字符串显示不同颜色
下面的命令可写入脚本执行,根据实际情况替换需要改变颜色的文本。
echo -e "\033[30m 黑色字 可替换部分 \033[0m"
echo -e "\033[31m 红色字 可替换部分 \033[0m"
echo -e "\033[32m 绿色字 可替换部分 \033[0m"
echo -e "\033[33m ×××字 可替换部分 \033[0m"
echo -e "\033[34m 蓝色字 可替换部分 \033[0m"
echo -e "\033[35m 紫色字 可替换部分 \033[0m"
echo -e "\033[36m 天蓝字 可替换部分 \033[0m"
echo -e "\033[37m 白色字 可替换部分 \033[0m"
6、通过定义变量的方式给字体加颜色
#!/bin/bash
#通过变量给字体加颜色
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK_COLOR='\E[1;35m'
RES='\E[0m'
echo -e "${RED_COLOR}=====红色可替换部分=====${RES}"
echo -e "${GREEN_COLOR}=====绿色可替换部分=====${RES}"
echo -e "${YELLOW_COLOR}=====×××可替换部分=====${RES}"
echo -e "${BLUE_COLOR}=====蓝色可替换部分=====${RES}"
echo -e "${PINK}=====粉色可替换部分=====${RES}"
7、开发一个给输出内容加颜色的函数(也可以加背景颜色)
在脚本中传2个参数,给指定内容(第一个参数),加指定颜色(第二个参数)
#!/bin/bash
#通过变量给字体加颜色
#这里定义一个COLOR_1()函数,后面如果想改变字体颜色直接调用即可
COLOR_1(){
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK_COLOR='\E[1;35m'
RES='\E[0m'
#这里判断传入的参数是否不等于2个,如果不等于2个就提示并退出
if [ $# -ne 2 ];then
echo "Usage $0 content {red|yellow|blue|green|pink}"
exit
fi
case "$2" in
red|RED)
echo -e "${RED_COLOR}$1${RES}"
;;
yellow|YELLOW)
echo -e "${YELLOW_COLOR}$1${RES}"
;;
green|GREEN)
echo -e "${GREEN_COLOR}$1${RES}"
;;
blue|BLUE)
echo -e "${BLUE_COLOR}$1${RES}"
;;
pink|PINK)
echo -e "${PINK_COLOR}$1${RES}"
;;
*)
echo -e "请输入指定的颜色代码:{red|yellow|blue|green|pink}"
esac
}
COLOR_1 "程序安装报错!" red
COLOR_1 "程序安装成功!" green
COLOR_1 "输出相关注释信息" blue