linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 软件开发 >
栏目导栏
资料搜索
热门文章
·Linux 下 C 语言编程
·Linux下的通用线程池创建
·C++字符串转换篇
·linux C 进程操作篇
·linux上的C/C++编译器gcc/egcs
·linux C 文件权限控制篇
·GCC使用手册
·linux C 接口处理篇
·在Redhat Linux上安装 GCC 编译
·GCC使用指南
·C语言运算符
·Linux下C开发环境的构成和安装
·fopen()函数的参数说明
·GCC使用手册与常用命令
·Scheme 语言介绍
最新文章
·在Ubuntu Linux 8.04上构建GCC
·Linux操作系统下Socket编程地址
·将VC程序移植到Linux系统的几点
·Linux下malloc/free与new/dele
·Linux下用GTK和socket实现简单
·Linux操作系统下让Tomcat启动在
·Linux操作系统中如何编译C程序
·几种常被人们忽略的Linux系统下
·Eclipse编程工具 在Ubuntu下的
·Linux操作系统下的网络地址转换
·老手经验谈:Linux驱动程序开发
·Linux操作系统多线程同步Mutex
·Linux操作系统下C程序语言简易
·Linux系统平台下关于GCC编译及
·解决Linux系统下管道被接受方关
Google
 
如何实现彩色Shell不单调
[ 作者:  加入时间:2005-11-25 10:29:07  来自: ]
 对于兼容ANSI的终端,如xterm、rxvt、konsole等,可以彩色显示终端文本中的底色或前景颜色,本文将详细讨论如何实现随意修改和定制这些终端的颜色。

    每个Linux用户几乎天天都会面对Bash,刚接触Linux的人总是感觉Bash过于沉闷单调,但是实际上每个用户都可以根据需要定制出自己喜欢的Shell,使它变得丰富多彩。例如,彩色提示符就可以使终端更酷,并且与众不同。

    由于Linux中使用最广泛的Shell就是Bash,因此我们在这里主要讨论Bash,希望在其它不同Shell中定制色彩的可以参考Man。

    配置Shell

    设置颜色可以在Linux用户个人的Shell配置文件~/.bashrc中完成,或者在全局配置文件/etc/bashrc中实现。这时候所有用户都会拥有一个一样的登录彩色Shell,其中提示符设置是由bashrc文件中的PS1变量来控制的,例如可能是如下的格式:
    ~/.bashrc: PS1="\s-\v\$ "

    这里"\s"表示Shell的名字,"\v"表示Shell的版本号,在最后提示添加一个"$"美元符号。这样,当该用户登陆以后,得到的提示符就如下所示:
    -bash-2.05b$

    由于这样的提示符并不能提供足够的有意义信息,例如当前所在目录等,因此在绝大多数Linux发布中,提示符往往被设置为如下所示:
    ~/.bashrc: PS1="[\u@\h \W \$] "

    这就是我们熟悉的[username@hostname current_dir $]的提示符模式。

    转义序列符

    为了添加个人风格的彩色提示符,我们需要使用转义序列符。一个转义序列符是一个控制命令,它控制Shell执行某个特定的动作。一个转义序列符通常以ESC开始,在Shell中被记录为"^[",有时候也被常常记录为\033(因为ESC在ASCII编码中是27,八进制就被记录为033)。

    为了直接在Shell中输入一个转义序列符,一般会以“Ctrl+V”作为前导,也就是“Ctrl-v ESC”。

    使用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
############################################################
# 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


    在Shell环境下设置颜色的能力,不仅仅能够使得Shell提示符看上去更丰富多彩和吸引人,而且能有助于帮助基于console的Linux程序的互动性和趣味性。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息