logogcn

To be a better man 专注于嵌入式开发 ARM LINUX WINCE
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用 shell 的颜色

Posted on 2010-11-30 10:55  logogcn  阅读(416)  评论(0编辑  收藏  举报

参见:http://www.linuxfocus.org/ChineseGB/May2004/article335.shtml

使用 shell 的颜色

  下面我用一个提示符的例子来解释 shell 的颜色。

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

这样提示符就全部显示成绿色了。就像这样: nico@ebrain:~$

\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度。稍后我会

  介绍其他的可用字符。 转义序列字符串要用 \[ 和 \] 括起来, 防止转义序列的文本显示在 shell

里占用太多的空间。

  下面我们要选择前景色(这里是 32,代表绿色)。背景色的 40 表示黑色。 要是不想让提示符后面的

文字也变成绿色,我们用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。前景色和背景色

都有 8 种可用的选择。

可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31

(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。

用同样色方法设置背景色,不过要把第一个数字“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\]"

这给了我们一个非常多彩的提示符:

nico@ ebrain: ~$

  我们使用 export PS1="string" 来测试这些设置, 稍后我们要把这些设置转移到 .bashrc 里面。 现

在我的提示符看起来是这个样子: PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]

\033[1;37;40m $\033[0;37;0m\] "

[ nico@ebrain:~ ]

文本属性

  刚才提到了,在第一个转义序列后面的“0”是提示符的文本的默认颜色设置。 对于文本属性来说,这

些值是有意义的:0、1、22、4、24、5、25、7、27, 分别表示:默认值、粗体、非粗体、下划线、非

下划线、闪烁、非闪烁、 反显、非反显。

通过下面这一段短小的脚本,我们可以看看色彩组合。:

#!/bin/sh
############################################################
# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
# Last change: Mon Feb 16 16:24:41 CET 2004
############################################################

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