1.简介
在linux中,我们将信息输出到终端(计算机屏幕),终端有默认的显示效果(一般为背景色为黑色,前景色为白色)。其实我们可以主动修改这个默认的显示效果和方式。
2.举例说明
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"
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
3.改变终端显示效果和方式的配置方法
改变终端显示效果的配置格式是:
\033[显示方式;前景色;背景色m
其中显示方式、前景色、背景色至少一个存在即可。
echo -e "\033[4;31;44mthis is test text\033[0m"
#在上面的例子中\033[4;31;44m表示“下划线、前景色为红色,背景色为黑色”
#\033[0m表示将终端的显示效果改为默认的方式
4.各种规则映射表
# 格式:\033[显示方式;前景色;背景色m
# 说明:
#
# 前景色 背景色 颜色
# ---------------------------------------
# 30 40 黑色
# 31 41 红色
# 32 42 绿色
# 33 43 黃色
# 34 44 蓝色
# 35 45 紫红色
# 36 46 青蓝色
# 37 47 白色
#
# 显示方式 意义
# -------------------------
# 0 终端默认设置
# 1 高亮显示
# 4 使用下划线
# 5 闪烁
# 7 反白显示
# 8 不可见
#
# 例子:
# \033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
# \033[0m <!--采用终端默认设置,即取消颜色设置-->]]]
另外,还有一些控制选项:
控制选项说明 :
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\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 显示光标
5.在python中的实现终端效果的转换
#/usr/bin/python
#-*- coding: utf-8 -*-
# 格式:\033[显示方式;前景色;背景色m
# 说明:
#
# 前景色 背景色 颜色
# ---------------------------------------
# 30 40 黑色
# 31 41 红色
# 32 42 绿色
# 33 43 黃色
# 34 44 蓝色
# 35 45 紫红色
# 36 46 青蓝色
# 37 47 白色
#
# 显示方式 意义
# -------------------------
# 0 终端默认设置
# 1 高亮显示
# 4 使用下划线
# 5 闪烁
# 7 反白显示
# 8 不可见
#
# 例子:
# \033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
# \033[0m <!--采用终端默认设置,即取消颜色设置-->]]]
STYLE = {
'fore':
{ # 前景色
'black' : 30, # 黑色
'red' : 31, # 红色
'green' : 32, # 绿色
'yellow' : 33, # 黄色
'blue' : 34, # 蓝色
'purple' : 35, # 紫红色
'cyan' : 36, # 青蓝色
'white' : 37, # 白色
},
'back' :
{ # 背景
'black' : 40, # 黑色
'red' : 41, # 红色
'green' : 42, # 绿色
'yellow' : 43, # 黄色
'blue' : 44, # 蓝色
'purple' : 45, # 紫红色
'cyan' : 46, # 青蓝色
'white' : 47, # 白色
},
'mode' :
{ # 显示模式
'mormal' : 0, # 终端默认设置
'bold' : 1, # 高亮显示
'underline' : 4, # 使用下划线
'blink' : 5, # 闪烁
'invert' : 7, # 反白显示
'hide' : 8, # 不可见
},
'default' :
{
'end' : 0,
},
}
def UseStyle(string, mode = '', fore = '', back = ''):
if STYLE['mode'].has_key(mode):
mode = STYLE['mode'][mode]
else:
mode = ''
if STYLE['fore'].has_key(fore):
fore = STYLE['fore'][fore]
else:
fore = ''
if STYLE['back'].has_key(back):
back = STYLE['back'][back]
else:
back = ''
stylelist = []
if mode != '':
stylelist.append(str(mode))
if fore != '':
stylelist.append(str(fore))
if back != '':
stylelist.append(str(back))
style = ';'.join(stylelist)
style = '\033[%sm' % style
end = '\033[%sm' % STYLE['default']['end']
return '%s%s%s' % (style, string, end)
def TestColor( ):
print UseStyle('正常显示')
print ''
print "测试显示模式"
print UseStyle('高亮', mode = 'bold'),
print UseStyle('下划线', mode = 'underline'),
print UseStyle('闪烁', mode = 'blink'),
print UseStyle('反白', mode = 'invert'),
print UseStyle('不可见', mode = 'hide')
print ''
print "测试前景色"
print UseStyle('黑色', fore = 'black'),
print UseStyle('红色', fore = 'red'),
print UseStyle('绿色', fore = 'green'),
print UseStyle('黄色', fore = 'yellow'),
print UseStyle('蓝色', fore = 'blue'),
print UseStyle('紫红色', fore = 'purple'),
print UseStyle('青蓝色', fore = 'cyan'),
print UseStyle('白色', fore = 'white')
print ''
print "测试背景色"
print UseStyle('黑色', back = 'black'),
print UseStyle('红色', back = 'red'),
print UseStyle('绿色', back = 'green'),
print UseStyle('黄色', back = 'yellow'),
print UseStyle('蓝色', back = 'blue'),
print UseStyle('紫红色', back = 'purple'),
print UseStyle('青蓝色', back = 'cyan'),
print UseStyle('白色', back = 'white')
print ''
if __name__ == '__main__':
TestColor( )
执行结果如下:
5.一点闲话
在其他平台以及其他编程语言中也可以改变终端的默认显示效果和方式。
参考学习资料来源于:
http://blog.csdn.net/gatieme/article/details/45439671
http://onlyzq.blog.51cto.com/1228/546459