[转]shell上面用printf打印彩色文本

原文:http://hi.baidu.com/maple5218/item/61e918358b606f22b2c0c5a9

 

如果你用的是BSHELL或者BASH,有很简单的方法,就象ls程序那样: 

printf "\033[01;40;32mHELLO\033[0m" 

能显示绿色的HELLO字样。 
这里

\033[是转义子列,表示后面接的是颜色代码。 

01是高亮度,不写是低亮度。 

40是背景色,40:黑,41:红:42:绿,43:黄,44:青,45:蓝,47:白。 

32是前景色:30:黑,31:红,32:绿,33:黄,34:蓝,35:紫,36:青,37:白。 

\033[0m系统缺省色 


还可以用 

如果需要在shell脚本里打印不同颜色的字符,可以使用ESC序列。 

echo -e '\e[44;33;1m colors \e[0m' 

echo -e表示启用\字符转义;\e即打印ESC控制符;[固定格式;44设置 

背景为蓝色;33设置前景为白色;1设置加亮显示;m固定格式;colors 

要打印的字符串;\e[0m设回开始的shell环境颜色设置。 

连起来就是打印背景蓝色、前景高亮白色的字符串colors。 

例子: 
#!/bin/sh 

printf "iloveyou\n" 

#不要将\n写在彩色代码内,否则下一行也是彩色的 
printf "\033[01;41;32mHELLO\033[0m\n" 

printf "\033[0m\n" 
printf "\n" 

echo -e "\e[01;41;32mHELLO\e[0m\n"

posted @ 2014-03-06 20:30  Scan.  阅读(355)  评论(0)    收藏  举报