ANSI控制码
简介
ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。
ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。ANSI控制码依赖终端,不是依赖语言,所以在shell,perl,c里应用均没有问题。
ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。
格式
echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
注意m后面紧跟字符串。
ANSI控制码
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色(字体色)30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色
\33[40m -- \33[47m 设置背景色 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
显示字元属性控制
[n1;n2;......m
Ⅰ设定显示字元的属性状态;
Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开;
Ⅲ除非重新设定,否则原设定之属性一直被保留;
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
转自:
所有评论(0)