6.9 控制提示符
Bash在打印每个主要提示前会检查数组变量PROMPT_COMMAND
的值,如果PROMPT_COMMAND
中的任何元素被设置且非空,Bash就会按数字顺序执行每个值,就像在命令行上输入的一样。
此外,下表描述了可出现在提示变量PS0
、PS1
、PS2
和PS4
中的特殊字符。
\a
一个响铃字符。
\d
日期,格式为"星期月日"(例如," Tue May 26")。
\D{format}
format被传递给
strftime
(3),结果被插入到提示字符串中;一个空的format导致一个特定于本地的时间表示。大括号是必须的。\e
一个转义字符。
\h
主机名,直到第一个‘.’。
\H
主机名。
\j
当前由 shell 管理的作业数。
\l
shell 终端设备名称的基本名称。
\n
一个换行符。
\r
一个回车键。
\s
shell的名称,即
$0
的基本名称(最后的斜线之后的部分)。\t
时间,以24小时的HH:MM:SS格式表示。
\T
时间,以12小时的HH:MM:SS格式表示。
\@
时间,以12小时的am/pm格式表示。
\A
时间,以24小时的HH:MM格式表示。
\u
当前用户的用户名称。
\v
Bash的版本(例如,2.00)。
\V
Bash的发布,版本+补丁级别(例如,2.00.0)。
\w
PWD
shell变量的值($PWD
),$HOME
用波浪号缩写(使用$PROMPT_DIRTRIM
变量)。\W
$PWD
的基本名称,$HOME
的缩写是一个波浪号。\!
这条命令的历史编号。
\#
这条命令的命令编号。
\$
如果有效的UID是0,则
#
,否则$
。\nnn
其ASCII码为八进制值nnn的字符。
\\
一个反斜杠。
\[
开始一个非打印字符的序列。这可以用来将终端控制序列嵌入到提示中。
\]
结束一连串的非打印字符。
命令编号和历史编号通常是不同的:命令的历史编号是它在历史列表中的位置,其中可能包括从历史文件中恢复的命令(见9.1 Bash 历史工具),而命令编号是在当前shell会话中执行的命令序列中的位置。
在对字符串进行解码后,它将通过参数扩展、命令替换、算术扩展和引号去除等方式进行扩展,但要遵守promptvars
shell选项的值(见2 Shopt 内置程序)。 如果字符串的转义部分出现在命令替换中或包含单词扩展的特殊字符,这可能会产生不希望看到的副作用。