-
2009-06-02
脚本彩色化 - [技术探索]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://confusedday.blogbus.com/logs/40366205.html
偶尔回忆,还会想起家中那个曾用了10几年的小黑白电视.非黑即白单调的颜色,却每每都能给我无限的遐想:什么时候老妈让我看电视啊....呵呵
如今别说电视了,手机黑白屏幕的都少见了.可惜就在这五彩缤纷的时代里,我竟然被客户几乎全天的套牢在Unix shell的console面前.这也就是我决定要在console里显示颜色的目的.
ANSI Color, 也就是美国国家标准化组织(实际上某种程度上就是世界标准)制定的终端颜色标准,在这个标准里规定了终端显示颜色的标准.简单来说就是定制了当终端接受何种信息时显示颜色.
通常情况下,终端接受的就是字符.当你在终端上输入字符回车,字符被传递给远端(或者local,通过shell解析给OS),远端处理后返回字符信息.ANSI 定义当返回信息为以下格式时不显示字符而根据其格式显示相应的颜色:
<Esc>[Nm
解释下:这里的意思是接受到Esc这个键盘映射的字符(不是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"恢复默认设置
ok,了解完这些我们就可以开始丰富我们的工作脚本了,平时巡检处理故障什么的脚本一运行,红色的错误信息,黄色的警告,绿色的忽略.其他的做个点缀.色彩有了,怎么搭配只能靠咱们的艺术细胞发挥了.随机文章:
IHS 中日志的设置 2009-06-02cicsterm 键盘映射 2008-02-21中间件与JAVA 2007-07-16在文章中添加html和javascript的代码 2007-01-20mysql操作记要 2006-08-09
收藏到:Del.icio.us







