给点颜色给PS1

这里介绍了一堆关于彩色显示的代码…

1.字体颜色

用下面的代码可以让PS1变成蓝色:

  1. export PS1="\e[0;34m\u@\h \w> \e[m "

知道这是为什么嘛?

因为我们在中间嵌入了颜色代码:\e[0;34m 以及关闭颜色的代码:\e[m

下面的命令会让颜色变得更亮, 还带有加粗效果:

  1. export PS1="\e[1;34m\u@\h \w> \e[m "

慢慢介绍里面的东西都是什么意思:

  • \e[ 颜色开启
  • x;ym 颜色的类型: x,y自己定义
  • \e[m 关闭颜色

下面是一张颜色代码表:

颜色代码
黑色0;30
蓝色0;34
绿色0;32
青色0;36
红色0;31
紫色0;35
棕色0;33

如果把上面代码中的0替换成1就会使颜色加深, 字体加粗.

2.字体背景色

我们不仅可以更改显示的字体的颜色, 我们还可以改变字体的背景颜色:

  1. export PS1="\e[47m\u@\h \w> \e[m "

上面的命令使我们得到了一个浅灰色的背景.

3.组合

没错, 我们当然可以把上两种结果组合起来, 实现任何你想要的结果:

  1. export PS1="\e[0;34m\e[47m\u@\h \w> \e[m "
  2. `

比如利用上面的代码就可以得到一个字体颜色为蓝色, 字体背景色为浅灰的效果.

下面是我自己截的图, 不要看花眼…

promopt_color

每一行命令都对应它下一行开头的颜色.

这里还是希望你亲自实验一下, 而不是看一遍…

4.tput 命令

说实话, 我对这里也是第一次见, 长知识了.

例子:

  1. $ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf
  2. 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

其中:

  • tput setb [1-7] - 设置背景色
  • tput setf [1-7] - 设置前景色
  • tput setab [1-7] - 用ANSI escape设置背景色(我查了,但不懂…)
  • tput setaf [1-7] - 用ANSI escape设置前景色

前两个好使, 就算用echo输出也是很漂亮的.

还有一些设置字体的选项:

  • tput bold 粗体
  • tput dim 亮度减半
  • tput smul 开启下划线
  • tput rmul 关闭下划线
  • tput rev 颜色反转, 类似于高对比度那种
  • tput smso 开启高对比度模式
  • tput rmso 关闭高对比度模式
  • tput sgr0 关闭所有特效

颜色代码:

  • 0 – 黑色
  • 1 – 红色
  • 2 – 绿色
  • 3 – 黄色
  • 4 – 蓝色
  • 5 – 洋红
  • 6 – 青色
  • 7 - 白色

扩展阅读

9 UNIX / Linux tput Examples: Control Your Terminal Color and Cursor