使用PS1设置命令行颜色




PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的参数,可修改linux终端命令行各字体颜色。

带颜色的命令行

使用

在终端输入命令:

1
echo $PS1

可得到当前PS1的定义值:

1
PS1='[\u@\h \W]\$ '

PS1的常用参数以及含义:

参数 含义
\d 代表日期,格式为weekday month date,例如:”Mon Aug 1”
\H 完整的主机名称
\h 仅取主机名中的第一个名字
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v BASH的版本信息
\w 完整的工作目录名称
\W 利用basename取得工作目录名称,只显示最后一个目录名
\# 下达的第几个命令
\$ 提示字符,如果是root用户,提示符为 “#” ,普通用户则为 “$”

所以linux默认的命令行提示信息的格式

1
PS1='[\u@\h \W]\$ '

显示出来是: \[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名\]#

说明

在PS1中设置字符颜色的格式为:\[\e[F;Bm\]........\[\e[0m\],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,\[\e[0m\]作为颜色设定的结束。

颜色对照表:

F B color 备注
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色 在cmd里显示效果很差
35 45 紫红色 和powershell的紫色背景完全融为一体
36 46 青蓝色
37 47 白色

要使用颜色只需将对应数字套入设置格式中即可。 比如要设置命令行的格式为绿字黑底(\[\e[32;40m\]),显示当前用户的账号名称(\u)、主机的第一个名字(\h)、完整的当前工作目录名称(\w)、24小时格式时间(\t),可以直接在命令行键入如下命令:

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

经过多次测试后,最终确定了一个适合我自己的格式:

1
PS1="\[\e[37;48m\][\[\e[32;48m\]\h \[\e[35;48m\]\t \[\e[36;48m\]\w\[\e[0m\]]\\$ "

但注意这样的设置只是临时性的.

永久生效

上面的设置的作用域只有当前终端的登陆有效,关闭终端或退出登录即刻失效。要想永久性的保存设置,需要修改.bashrc配置文件。

1
2
3
4
5
6
7
8
# 编辑.bashrc
vim ~/.bashrc

# 加入这一行
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\[\e[33;40m\]\h \[\e[35;40m\]\d \[\e[37;40m\]\t \[\e[36;40m\]\w]\[\e[0m\]\\$ "

# 重新加载bash配置文件
source .bashrc

语法说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
"
\[\e[37;40m\]
[
\[\e[32;40m\]
\u
\[\e[37;40m\]
@
\h
\[\e[36;40m\]
\w
]
\[\e[0m\]
\\$
"




评论