逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
来自: http://blog.chinaunix.net/u/19081/showart_1087051.html
在bash中,可以通过更改PS1环境变量的值来设置提示行。通常的提示符颜色单调,用户可以通过在PS1中添加颜色代码序列来设置提示符中不同信息以不同颜色显示。

    添加颜色相当容易;第一步是设计不带颜色的提示行。然后,我们所要做的只是添加终端(而不是bash)可识别的专用转义序列,以使它以彩色显示文本的某些部分。标准Linux终端和X终端允许用户设置前景(文字)颜色和背景颜色,如果需要,还可以启用"bold"字符。有八种颜色可供我们选择。 

    颜色是通过在PS1中添加专用序列来选择的--基本上是夹在"\e["(转义开方括号)和"m"之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。

    下面是一个颜色代码示例:
        "\e[0m" 

    如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认值。您可能会在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我们看一下这些颜色代码。

 
颜色表 

   前景             背景              颜色
   ---------------------------------------
   30                40               黑色
   31                41               红色
   32                42               绿色
   33                43               黄色
   34                44               蓝色
   35                45               紫红色
   36                46               青蓝色
   37                47               白色


  代码              意义
   -------------------------
   0                 OFF
   1                 高亮显示
   4                 underline
   5                 闪烁
   7                 反白显示
   8                 不可见


    要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号(30-37)和背景编号(40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为32和40。然后打开您的提示行定义并在其中添加适当的颜色代码。下面的定义: 
        export PS1="\w>; " 
     变为: 
        export PS1="\e[32;40m\w>; " 

    到现在为止,提示行尽管已经很不错了,但仍不太完美。在bash显示出工作目录以后,我们需要使用"\e[0m"序列将颜色重新设置为正常值。 
        export PS1="\e[32;40m\w>; \e[0m

    这个定义将显示一个漂亮的绿色提示行,但我们仍需要做一些扫尾工作。我们不需要包括"40"这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;我们通过添加一个"1"颜色代码来修正这个问题,这将启用更亮的加粗文字。

    除了这个修改之外,我们还需要将全部非打印字符用专用的bash转义序列"\["和"\]"括起来。这两个序列通知bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。没有这两个转义序列,尽管您有了一个非常漂亮的提示行,但是如果您键入的命令恰好到达终端的最右端,就会造成显示混乱。

    下面是我们最终的提示行: 
        export PS1="\[\e[32;1m\]\w>; \[\e[0m\]" 

    别担心在同一个提示行中使用几种颜色,就像下面这样: 
        export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H>; \[\e[0m\]

posted on 2009-02-08 17:29 逛奔的蜗牛 阅读(1315) 评论(0)  编辑 收藏 引用 所属分类: Mac

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理