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

带颜色的命令行

使用

在终端输入命令:

1echo $PS1

可得到当前PS1的定义值:

1PS1='[\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默认的命令行提示信息的格式

1PS1='[\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),可以直接在命令行键入如下命令:

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

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

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

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

永久生效

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

1# 编辑.bashrc
2vim ~/.bashrc
3
4# 加入这一行
5PS1="\[\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\]\\$ "
6
7# 重新加载bash配置文件
8source .bashrc
  • 注意:部分发行版,如Debian 9的.bashrc文件中已经定义了PS1,所以在自定义的时候需要删除相关行。

语法说明:

 1"
 2\[\e[37;40m\]
 3    [
 4\[\e[32;40m\]
 5    \u
 6\[\e[37;40m\]
 7    @
 8    \h
 9\[\e[36;40m\]
10    \w
11    ]
12\[\e[0m\]
13    \\$
14"
  • 第 1 行:前后必须添加双引号
  • 第 2、4、6、9、12 行:颜色设置,因为 “\u” 之前有另外的颜色设置覆盖,所以此行只作用于 [
  • 第 13 行:必须两个"\"