[转载]linux终端输出带有颜色的字体
2011-05-28 22:40 会被淹死的鱼 阅读(1421) 评论(0) 编辑 收藏 举报原文地址:http://notes.houqp.com/doku.php?id=set_terminal_font_color
Hello World
要改变输出文字的颜色其实很简单,我们先来个hello world:
echo -e "\033[0;31;40mhello world"
基本语法
根据上面的代码,我来解释一下它的语法结构。
首先,”“里面的hello world应该很好理解了,就是我们要输出的内容,关键是前面的\033[0;31;40m,这里需要遵循一定的规律。
其中\033指的是33(8进制)代表escape字符,与”[“连起来就是设置字符颜色的标志。也就是说,当xterm看到”\033[“时就知道后面接的是要打印的字符的颜色设定。所以每次设定颜色的时候都要以这个开头。当然,你也可以用16进制来表示这个开头:
echo -e "\x1b\x5b0;31;40mhello world"
或者用”\e[“:
echo -e "\e[0;31;40mhello world"
“\033[“后面接的是三个参数,都用数字给出并以”;”号分隔。他们分别代表字体属性,字体颜色与背景颜色。
以我们的hello world为例,0代表重置原来的所有属性,31是红色的代码,40则是黑色背景的代码。
关于具体每个参数有哪些可选的值,请看下面。
参数代码
以下只列举了常用的一部分代码,更完整的列表暂时还没找到。
- 字体属性
-
0 Reset All Attributes (return to normal mode) 1 Bright (usually turns on BOLD) 2 Dim 3 Underline 5 Blink 7 Reverse 8 Hidden
- 字体颜色
-
30 black 31 dark red 32 light green 33 dark yellow 34 dark blue 35 light violet 36 light blue, cyan 37 white
- 背景颜色
-
40 Black 41 Red 42 Green 43 Yellow 44 Blue 45 Magenta 46 Cyan 47 White
有一点要注意的是所有颜色配上1m参数做为背景时就会被加亮,例如31;1m代表更亮的红。但这时就无法指定背景了。
想要要各种字体的颜色,可以运行这个脚本:
- color-matrix.sh
-
#!/bin/bash #对7种颜色的加亮 for i in `seq 30 37`;do echo -e "\x1b\x5b0;$i;1m $i;1m" done #7种颜色与7种背景的搭配 for j in `seq 40 47`;do for i in `seq 30 37`;do echo -e "\x1b\x5b0;$i;"$j"m $i;"$j"m" done done
更多颜色
后来发现原来可以现实更多的颜色!!! 请看这个脚本。
作者:icejoywoo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
短网址: http://goo.gl/ZiZCi