使用Shell颜色


   首先使用一个例子来说明如何实现Shell彩色:

   PS1="\[ \033[0;32;40m\u@\h:\w\$ \033[0m \]"


   这时候就会显示如下的提示符:


   在上面命令中,“\033[0;32;40m”表示定义后面文本的颜色,“\033”表示启动一个转义序列,“[”定义开始颜色定义,“0”定义默认的字体颜色,其它部分稍后定义。“32”定义文本的前景色,这里32表示绿色;“40”定义文本的背景色,40表示黑色。在字符串的最后定义了“ \033[0m”,它是用来恢复了默认的文本颜色设置,这样就只会得到一个彩色提示符,而不会影响命令和其输出的颜色显示(即黑底白字)。


   我们一共有8种字体颜色可供选择,它们分别是30 (黑色)、31 (红色)、32 (绿色)、33 (×××)、34 (蓝色)、35 ( 紫红色)、36 (青色)和37 (白色)。对于底色也有8种颜色可供选择,只需要将字体颜色的3修改为4即可,例如40、41、42、43、44、45、46、47。


   例如,运行下面命令:

   ~/.bashrc: PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"


   将显示如下彩色提示符:


   或者

   PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]\033[1;37;40m $\033[0;37;0m\] "


   将显示如下彩色提示符:


   文本属性


   我们前面提到,转义序列符后面的“0”表示定义文本的颜色设置。除了颜色设置以外,还可以设置文本的其它属性。转义序列符后可以跟以下数值:0、1、22、4、24、25、7、27,分别定义颜色、黑体、非黑体、下画线、非下画线、闪烁、非闪烁、翻转、非翻转。通过下面的脚本我们可以看到所有的效果:


#!/bin/sh



for attr in 0 1 4 5 7 ; do

   echo "----------------------------------------------------------------"

   printf "ESC[%s;Foreground;Background - \n" $attr

   for fore in 30 31 32 33 34 35 36 37; do

       for back in 40 41 42 43 44 45 46 47; do

           printf '\033[%s;%s;%sm %02s;%02s  ' $attr $fore $back $fore $back

       done

   printf '\n'

   done

   printf '\033[0m'

done




   在Shell环境下设置颜色的能力,不仅仅能够使得Shell提示符看上去更丰富多彩和吸引人,而且能有助于帮助基于console的Linux程序的互动性和趣味性。(T111)



编码 颜色/动作


  0   重新设置属性到缺省设置

  1   设置粗体

  2   设置一半亮度(模拟彩色显示器的颜色)

  4   设置下划线(模拟彩色显示器的颜色)

  5   设置闪烁

  7   设置反向图象

  22  设置一般密度

  24  关闭下划线

  25  关闭闪烁

  27  关闭反向图象

  30  设置黑色前景

  31  设置红色前景

  32  设置绿色前景

  33  设置棕色前景

  34  设置蓝色前景

  35  设置紫色前景

  36  设置青色前景

  37  设置白色前景

  38  在缺省的前景颜色上设置下划线

  39  在缺省的前景颜色上关闭下划线

  40  设置黑色背景

  41  设置红色背景

  42  设置绿色背景

  43  设置棕色背景

  44  设置蓝色背景

  45  设置紫色背景

  46  设置青色背景

  47  设置白色背景

  49  设置缺省黑色背景