PS1是用来设置命令提示符的环境变量,可以在终端输入:
echo $PS1
来查看当前的设置。比如我安装的Ubuntu 16.04输入上述命令得到如下输出:
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
效果图如下所示:
这样的命令提示不美观,而且当我们输入的linux命令得到很多输出的时候我们很难找到命令提示符在哪里,所以可以通过设置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时,提示符为:# ,普通用户则为:$
我们可以通过颜色代码来修饰上述这些组件,颜色代码的格式为\[\e[F;Bm\],其中F表示字体的颜色,编号3037,B表示背景的颜色,编号4047。
颜色表如下:
字体代码 | 背景代码 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
根据以上说明,我配置的PS1如下所示(我直接在.bashrc中进行配置的,这样每次打开终端都会出现配置的效果):
export PS1="\[\e[32;1m\][\[\e[33;1m\]\u\[\e[31;1m\]@\[\e[33;1m\]\h \[\e[36;1m\]\w\[\e[32;1m\]]\[\e[34;1m\]\$ \[\e[0m\]"
效果图如下:
说明:
- 这里1m背景色是近似透明的。
- 注意在$符号输出之后,我们还要重置颜色为透明,也就是\[\e[0m\],这样你输入的命令就不会受之前颜色设置的影响。