[转]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"

浙公网安备 33010602011771号