在Windows的CMD里,只能改变命令提示符整个的颜色,比如你打开Windows输入 color 2

而在Bash里就不一样了,这次我是用git-bash,Linux里Bash也同理。关键的变量是 $PS1 。输入 echo

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]#

这是默认的格式,里面的转义字符意义如下。

\d:  # 代表日期,格式为weekdaymonthdate,例如:"MonAug1"

\H:  # 完整的主机名称。

\h:  # 仅取主机的第一个名字,如上例,则为fc4,.linux则被省略

\t:  # 显示时间为24小时格式,如:HH:MM:SS

\T:  # 显示时间为12小时格式

\A:  # 显示时间为24小时格式:HH:MM

\u:  # 当前用户的账号名称

\v:  # BASH的版本信息

\w:  # 完整的工作目录名称。家目录会以~代替

\W:  # 利用basename取得工作目录名称,所以只会列出最后一个目录

\#:  # 下达的第几个命令

\$:  # 提示字符,如果是root时,提示符为:#,普通用户则为:$

这样默认的代码就容易理解了,而且自然可以随意组合。例如

[root@localhost  ~]# export PS1='[\u@\h \t \w]\$ '
[root@localhost 19:40:55 ~]#

接下来才是重点,设置颜色。

首先颜色分前景色和背景色,就是字体的颜色和背景的颜色。比如这些字是红的,而背景是黄的。下面先给出两个表格,用于控制颜色以及效果。

 

红色

绿色

黄色

蓝色

紫红色

青蓝色

黑色

白色

前景色

31

32

33

34

35

36

30

37

背景色

41

42

43

44

45

46

40

47

控制效果

无彩色

高亮

下划线

闪烁

反显

不可见

代码

0

1

4

5

7

8

在PS1中设置字符序列颜色的格式为: \e[C;F;Bm

其中“C”为控制效果,编号如第二个表;“F”为字体颜色,编号30~37;“B”为背景色,编号40~47。

 

下面讲解一个格式,也是我自己的格式

PS1='[\e[1;32;44m\u@\h\e[1;33m\t\e[1;36m\w\e[0m]\$ '

 之所以没有空格显得这么乱是因为中间打空格也会当成一个字符,下面我加上空格分解一下并附上结果图。

[  \e[1;32;44m  \u  @  \h  \e[1;33m  \t  \e[1;36m  \w  \e[0m  ]  \$

命令提示符更新bios 命令提示符更改_背景色

第一个左括号是没有继承到颜色属性的,因为颜色属性是往后设置的,而后面的 \e[1;32;44m 代表字符显示为字符为绿色,背景为蓝色,且高亮显示。此时后面的所有字符都被设置为这个格式,直到下一个颜色设置 \e[1;33m

\e[0m

这里其实没完,如果就这么设置颜色是变了,但是如果你输入命令较长的时候是不会换行的,可以一直输入一个字母试试,这一行到头后会覆盖这一行第一个字符,也就是命令提示符的部分。那么该如何解决呢。答案是将每一个颜色设置用左右括号包起来,当然需要转义,就像这样 \[\e[1;32m\]

 

PS1='[\[\e[1;32;44m\]\u@\h\[\e[1;33m\]\t\[\e[1;36m\]\w\[\e[0m\]]\$ '

 

永久设置请将PS1变量写入home目录下.bashrc文件,即~/.bashrc

git-bash配置文件在/etc/bash.bashrc