长期对着黑白的终端,可能会觉得枯燥。其实Bash允许自定义彩色的命令提示符、彩色的grep显示、彩色的man显示、彩色的ls显示等等。

 

我们只需要编辑个人或者全局的shell配置文件就可以构建自己的独特的多姿多彩的shell。其中,用户个人配置文件是~/.bashrc,全局配置文件是/etc/bash.bashrc(ubuntu)或者/etc/bashrc(Fedora)。

 

 


彩色的命令提示符


在配置文件中设置环境变量PS1,如下: (注意,除了待显示文本,千万不要有多余的空格)


export PS1="/[/033[1;32m/][ /[/033[1;31m/]/u@/h: /[/033[1;34m/]/w /[/033[1;32m/]] /[/033[1;31m/]/$ /[/033[0m/]"



PS1的内容由若干个如下片段组成(除了最后一个片段):


/[颜色描述字符串/] 待显示文本


最后一个片段没有待显式文本,待显示文本就是用户输入的命令。这里用的颜色 /[/033[0m/],是指默认值。/[和/]是转义符,其内部是非打印字符,有时候可以不要这两个转义符。


颜色描述字符串的格式为:


/033[特殊格式;字体颜色;背景颜色m


其中/033是键盘上Esc键对应的ASCII码(27=/033=0x1B),指示:后面的内容是特殊含义的,等效写法有 ^[ 以及 /e

特殊格式

含义

字体颜色值

背景颜色值

颜色

 0

 默认值

30

 40

黑色

 1

 粗体

 31

 41

红色

 22

 非粗体

 32

 42

绿色

 4

 下划线

 33

 43

黄色

24

 非下划线

 34

 44

蓝色

 5 

 闪烁

 35

 45

洋红

 25

 非闪烁

 36

 46

青色

 7

 反显

 37

 47

白色

 27

 非反显

 

 




值得注意的是,颜色的含义在终端中是可以调整的


转义符:


/a                an ASCII bell character (07) 
 
  /d                  the date in "Weekday Month Date" format (e.g., "Tue May 26") 
 
  /D{format}   the format is passed to strftime(3) and the result is inserted into the prompt string an empty format 
 
                       results in a locale-specific time representation. The braces are required 
 
  /e                  an ASCII escape character (033) 
 
  /h                  the hostname up to the first `.' 
 
  /H                  the hostname 
 
  /j                  the number of jobs currently managed by the shell 
 
  /l                  the basename of the shell's terminal device name 
 
  /n                  newline 
 
  /r                  carriage return 
 
  /s                  the name of the shell, the basename of $0 (the portion following the final slash) 
 
  /t                  the current time in 24-hour HH:MM:SS format 
 
  /T                  the current time in 12-hour HH:MM:SS format 
 
  /@                 the current time in 12-hour am/pm format 
 
  /A                  the current time in 24-hour HH:MM format 
 
  /u                  the username of the current user 
 
  /v                  the version of bash (e.g., 2.00) 
 
  /V                  the release of bash, version + patch level (e.g., 2.00.0) 
 
  /w                 the current working directory, with $HOME abbreviated with a tilde 
 
  /W                the basename of the current working directory, with $HOME  abbreviated with a tilde 
 
  /!                  the history number of this command 
 
  /#                 the command number of this command 
 
  /$                 if the effective UID is 0, a #, otherwise a $ 
 
  /nnn             the character corresponding to the octal number nnn 
 
  //                  a backslash 
 
  /[                  begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt 
 
  /]                  end a sequence of non-printing characters

 

 

测试脚本:

for attr in 0 1 4 5 7; do
printf "/033[1;31m//e[/033[0m%s/033[1;31m;/033[0mForground/033[1;31m;/033[0mBackground/033[1;31mm /033[0m- /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


参考:
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
http://www.51testing.com/?uid-175444-action-viewspace-itemid-101030
彩色的man显示:

   
   
export PAGER="/usr/bin/less -s"
export BROWSER="$PAGER" 
   
   

export LESS_TERMCAP_mb=$'/E[01;34m'
   
   
export LESS_TERMCAP_md=$'/E[01;34m'
   
   
export LESS_TERMCAP_me=$'/E[0m'
   
   
export LESS_TERMCAP_se=$'/E[0m'
   
   
export LESS_TERMCAP_so=$'/E[01;44;33m'
   
   
export LESS_TERMCAP_ue=$'/E[0m'
   
   
export LESS_TERMCAP_us=$'/E[01;33m'

   
   



 
 彩色的grep显示: 

alias grep='grep --colour=auto'