服务器初始默认的命令提示符很长,而且没什么意义。在我们使用Putty等工具进行服务器与本地之间的数据传输时,往往需要用到服务器的用户名@服务器外部IP地址:当前路径
。有时候记不住IP地址就需要去查,很麻烦,如果将这些信息标注在命令提示符处再合适不过。
这里用到的就是Linux中的PS1
这个环境变量。你可以通过如下命令查看当前的默认设置:
$ echo $PS1
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\]其他参数\[\e[0m\]
颜色设置开始标记\[\e[F;Bm\]
中的F代表前景色,即字体色,B代表背景色。结束标记\[\e[0m\]
中的0代表的是关闭所有属性。如果这里不关闭,那么颜色设置将会向右到底,也就是除了命令提示符,命令也会被设成这种颜色。当然,这种格式下,在开始和结束标记之间的即为被设置颜色的域。颜色码F与B的具体描述如下表:
颜色 | F的码值 | B的码值 |
---|---|---|
黑色 | 30 | 40 |
红色 | 31 | 41 |
绿色 | 32 | 42 |
黄色 | 33 | 43 |
蓝色 | 34 | 44 |
紫红色 | 35 | 45 |
青蓝色 | 36 | 46 |
白色 | 37 | 47 |
另外还有一些特殊码值,控制颜色以外的其他格式:
码值 | 描述 |
---|---|
0 | 关闭所有属性 |
1 | 高亮加粗 |
4 | 下划线 |
5 | 闪烁 |
7 | 反显 |
8 | 消隐 |
说完了这些语法格式,那么具体要如何更改设置呢,这里举一个小例子,是我自己用的设置。首先要进入到当前用户的根目录,如下两种方法都可以:
$ cd ~
$ cd /home/username
然后编辑.bashrc
文件,这个文件是用户的环境变量设置文件。这就相当于Windows下在我的电脑的属性中设置环境变量一样,后文还会讲到其他相关的Trick。
$ vim .bashrc
然后将你的设置随便加到最上面或者最下面都行:
export PS1='[\[\e[32;40m\]\u\[\e[0m\]@123.123.123.123:\[\e[35;40m\]\w\[\e[0m\]]\$ '
然后保存.bashrc
。要让设置生效还需要一步,你可以退出账户重新登录(默认会刷新配置),也可以输入以下命令:
$ source .bashrc
我们来分析以上设置的含义:
- 开头有一个左方括号
[
- 使用颜色设置将
\u
参数括起来,得到一个黑色背景绿色文字的用户名 @123.123.123.123:
这里的IP替换成你自己的外部IP地址,注意由于关闭了属性,所以这里是默认的黑底白字- 使用颜色设置将
\w
参数括起来,得到一个黑色背景紫色文字的全路径 - 最后是一个
]
接着一个用户权限提示符和一个空格
效果如下:
如果你想设置高亮等特殊属性,要在颜色设置开始标记的地方将背景色B设置为1之类的。如下就设置了用户名为高亮的绿色:
export PS1='[\[\e[32;1m\]\u\[\e[0m\]@123.123.123.123:\[\e[35;40m\]\w\[\e[0m\]]\$ '
注意,注意 网上很多教程给出的颜色设置标记没有被\[
和\]
括起来。这将会导致命令长度超过终端屏宽后无法自动换到下一行,会\r
一下然后覆盖掉本行的开头。这是一个很恼人的问题,因为如果你查putty
不能自动换行之类的根本查不到解决方案,后来才想起来可能是PS1
值的错误导致的。