GUN/Bash 系列(七)提示符(Prompting)
在使用交互式 Bash 时,一个配置得当的命令提示符可以为用户带来不少便利,本文讲解如何配置命令提示符。
默认提示符
命令提示符涉及到以下两个环境变量:
环境变量 | 描述 |
---|---|
PS1 |
主提示符,Bash 会在准备好读入一条命令时显示,默认值 \s-\v\$ |
PS2 |
次提示符,Bash 会在需要更多的输入来完成一条命令时显示,默认值 > |
定制提示符
Bash 允许通过插入一些反斜杠转义的特殊字符来定制这些提示符,常用的转义字符如下:
转义字符 | 描述 |
---|---|
\h |
主机名,第一个 . 之前的部分 |
\H |
主机名 |
\j |
shell 当前管理的作业数量 |
\l |
shell 的终端设备名的基本部分 |
\n |
新行符 |
\r |
回车 |
\s |
shell 的名称, $0 的基本部分 (最后一个斜杠后面的部分) |
\u |
当前用户的用户名 |
\v |
bash 的版本 (例如,4.3) |
\w |
当前工作目录 |
\W |
当前工作目录的基本部分 |
\! |
此命令的历史编号 |
\# |
此命令的命令编号 |
\$ |
如果有效 UID 为 0,则显示 # , 否则 $ |
\\ |
一个反斜杠 |
除此之外,还有一些不太常用的日期转义字符:
转义字符 | 描述 |
---|---|
\d |
当前日期,格式是 “星期 月份 日” (例如,”Tue May 26”) |
\D{format} |
自定义日期格式,花括号是必需的 |
\t |
当前时间,采用 24 小时制的 HH:MM:SS 格式 |
\T |
当前时间,采用 12 小时制的 HH:MM:SS 格式 |
\@ |
当前时间,采用 12 小时制上午/下午 am/pm 格式 |
\A |
当前时间,采用 24 小时制上午/下午格式 |
如何定制
由于 PS1
默认设置的 \s-\v\$
实在是太废毫无信息量可言,显示如下:
1 | bash-4.3$ |
因此可以通过修改 ~/.bash_profile
文件来定制自己的命令提示符。例如,使用 CentOS 默认设置的 [\u@\h \W]\$
:
1 | $ vim ~/.bash_profile |
定制后,能够知道当前用户、主机名、工作目录:
1 | [root@BGP-BJ-C-5HL ~]$ |
参考
http://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt