Shell 显示带颜色字体

Shell 显示带颜色字体
格式: echo “\033[字背景颜色;字体颜色m字符串\033[控制码”
如果单纯显示字体颜色可以固定控制码位0m。
格式: echo “\033[字背景颜色;字体颜色m字符串\033[0m”

字背景颜色范围:40 - 49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色

字颜色:30 - 39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

ANSI控制码
\33[0m 关闭所有属性
\33[01m 设置高亮度
\33[04m 下划线
\33[05m 闪烁
\33[07m 反显
\33[08m 消隐
\33[30m – \33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\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 显示光标

例如:

让字体变为红色并且不停的闪烁

echo -e “\033[31m \033[05m 请确认您的操作,输入 [Y/N] \033[0m”

或者

echo -e “\033[31m \033[05m 请确认您的操作,,输入 [Y/N] \033[0m”

shell脚本彩色化
作者: kelvin_yin

ANSI Color, 也就是美国国家标准化组织(实际上某种程度上就是世界标准)制定的终端颜色标准,在这个标准里规定了终端显示颜色的标准.简单来说就是定制了当终端接受何种信息时显示颜色.
通常情况下,终端接受的就是字符.当你在终端上输入字符回车,字符被传递给远端(或者local,通过shell解析给OS),远端处理后返回字符信息.ANSI 定义当返回信息为以下格式时不显示字符而根据其格式显示相应的颜色:
[Nm
解释下:这里的意思是接受到Esc这个键盘映射的字符(不是Esc这三个字符,更不是这五个字符)后紧跟着”[“(方括号这个字符)然后N代表一个数字最后以m结尾的这么一个古怪的字符串.
当终端接受这个信息,若是终端本身支持ANSI color的标准(xterm gnome-terminal kconsole SecureCRT 等等均支持)终端就会显示颜色.注意是终端支持,而不是某个shell支持(和使用那种shell无关)
明白如上信息后,就只需要了解N所代表的数字到底对应什么颜色即可了:

效果设置
0 重置设置
1 高亮
2 灰度
4 下划线
5 闪烁
7 反转(字符颜色和背景颜色反转)
竟然没有6,奇怪
8 隐藏(估计这就是平时输入密码用的)

字符颜色Foreground Colours

30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 粉色
36 青色
37 白色

背景颜色Background Colours

40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 粉色
46 青色
47 白色

另外Esc这个字符实际上很难直接操作出来,所以可以使用转移方法:\033或者有些终端支持\e.因此尝试用echo命令就可以测试当前终端是否支持ANSI color:
echo -en “\033[31m”(linux) echo “\033[31m”(aix) 正常情况下后续的字符将显示为红色.
当需要效果设置,前景,背景多种效果同时设置可以使用分号间隔”;”譬如: “\033[5;31;43m”意思为红色字体,黄色背景,同时不停的在做闪烁.测试完毕后使用”\033[0m”恢复默认设置

你可能感兴趣的:(linux程序设计)