改变linux终端颜色

旧城等待, 2022-07-14 00:10 345阅读 0赞

注本主转载 http://www.cnblogs.com/li-hao/archive/2012/04/13/2446397.html
**博主自用的样式为:
PS1=”[\e[0;35;40m][\u@\h \w]$ [\e[0;37;40m]”
加在~.bashrc里这样切换账号加载bash的时候PS1变量就会跟着带上了。
**

改变linux终端颜色

对于兼容ANSI的终端,如xterm、rxvt、konsole等,可以彩色显示终端文本中的底色或前景颜色,本文将详细讨论如何实现随意修改和定制这些终端的颜色。

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

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

配置Shell

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

  1. ~/.bashrc: PS1="s-v$ "

这里”s”表示Shell的名字,”v”表示Shell的版本号,在最后提示添加一个””美元符号。这样,当该用户登陆以后,得到的提示符就如下−bas**h−2.05b样的提示符并不能提供足够的有意义信息,例如当前所在目录等,因此在绝大多数Linux发布中,提示符往往被设置为如下所示:

  1. ~/.bashrc: PS1="[u@h W $] "

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

转义序列符

为了添加个人风格的彩色提示符,我们需要使用转义序列符。一个转义序列符是一个控制命令,它控制Shell执行某个特定的动作。一 个转义序列符通常以 ESC开始,在Shell中被记录为”^[“,有时候也被常常记录为3(因为ESC在ASCII编码中是27,八进制就被记录为033)。为了直接在 Shell中输入一个转义序列符,一般会以“Ctrl+V”作为前导,也就是“Ctrl-v ESC”。

现在大多数的版本格式可以直接用转意符 [\e 来代替 “Ctrl-v ESC” 如博主的PS1如下:

PS1=”[\e[0;35;40m][\u@\h \w]$ [\e[0;37;40m]”

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

  1. PS1="[ 3[0;32;40mu@h:w$ 3[0m ]"

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

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

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

例如,运行下面命令:

  1. ~/.bashrc: PS1="[3[0;37;44mu@3[0;32;43mh:3[0;33;41mw$3[0m]"

或者

PS1=”[3[1;34;40m[3[1;31;40mu@h:w3[1;34;40m]3[1;37;40m $3[0;37;0m] “

前景 背景 颜色

  1. 30 40 黑色
  2. 31 41 紅色
  3. 32 42 綠色
  4. 33 43 黃色
  5. 34 44 藍色
  6. 35 45 紫紅色
  7. 36 46 青藍色
  8. 37 47 白色

代码 意义

  1. 0 OFF
  2. 1 高亮显示
  3. 4 underline
  4. 5 闪烁
  5. 7 反白显示
  6. 8 不可见

循环字体颜色示例:

  1. #!/bin/sh
  2. ############################################################
  3. # Nico Golde Homepage: http://www.ngolde.de
  4. # Last change: Mon Feb 16 16:24:41 CET 2004
  5. ############################################################
  6. for attr in 0 1 4 5 7 ; do
  7. echo "----------------------------------------------------------------"
  8. printf "ESC[%s;Foreground;Background - " $attr
  9. for fore in 30 31 32 33 34 35 36 37; do
  10. for back in 40 41 42 43 44 45 46 47; do
  11. printf '3[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
  12. done
  13. printf ' '
  14. done
  15. printf '3[0m'
  16. done

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

发表评论

表情:
评论列表 (有 0 条评论,345人围观)

还没有评论,来说两句吧...

相关阅读