Bash学习 - 第6章:Bash Features,第9节:Controlling the Prompt

本文为 Bash Reference Manual第6章:Bash Features 第9节:Controlling the Prompt 的读书笔记。

完整的笔记目录参见Bash学习笔记总目录

6.9 Controlling the Prompt

此外,下表描述了可以出现在提示符变量 PS0、PS1、PS2 和 PS4 中的特殊字符:


\a

一个响铃字符。


\d

日期,格式为"星期 月 日"(例如,"Tue May 26")。


\D{format}

将格式传递给 strftime(3),结果插入到提示符字符串中;若格式为空,则使用特定语言环境的时间表示。大括号是必需的。


\e

一个转义字符。


\h

主机名,直到第一个'.'为止。


\H

完整主机名。


\j

当前 shell 管理的作业数量。


\l

shell 终端设备名称的基本名(例如"ttys0")。


\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 的字符。


\\


\[

开始一个不可打印字符序列。可用于在提示符中嵌入终端控制序列。


\]

结束不可打印字符序列。

命令号和历史号通常是不同的:命令的历史号是它在历史列表中的位置,该列表可能包括从历史文件中恢复的命令(参见 Bash 历史功能),而命令号是当前 Shell 会话中执行命令的序列位置。

字符串解码后,会通过参数扩展、命令替换、算术扩展和引号移除进行扩展,同时受 promptvars Shell 选项值的影响(参见 Shopt 内建命令)。如果字符串中的转义部分出现在命令替换中或包含对单词扩展而言特殊的字符,这可能会产生不希望的副作用。

默认的提示符如下:

bash 复制代码
[vagrant@ol9-vagrant ~]$ echo $PS1
[\u@\h \W]\$

一些简单的例子:

bash 复制代码
[vagrant@ol9-vagrant ~]$ PS1='[\u@\h \t]\$'
[vagrant@ol9-vagrant 03:48:55]$
[vagrant@ol9-vagrant 03:48:57]$
[vagrant@ol9-vagrant 03:48:57]$PS1='[\u@\h \T]\$'
[vagrant@ol9-vagrant 03:49:29]$
[vagrant@ol9-vagrant 03:49:30]$PS1='[\u@\h \@]\$'
[vagrant@ol9-vagrant 03:49 AM]$PS1='[\u@\h \v]\$'
[vagrant@ol9-vagrant 5.1]$PS1='[\u@\h \V]\$'
[vagrant@ol9-vagrant 5.1.8]$

一些复杂的例子,用到了颜色控制序列,详见终端的颜色控制

bash 复制代码
if [[ ${EUID} == 0 ]] ; then
PS1='\e[1;31;48;5;234m\u \e[38;5;240mon \e[1;38;5;28;48;5;234m\h \e[38;5;54m\d \@\e[0m\n\e[0;31;48;5;234m[\w] \e[1m\$\e[0m '
else
PS1='\e[1;38;5;56;48;5;234m\u \e[38;5;240mon \e[1;38;5;28;48;5;234m\h \e[38;5;54m\d \@\e[0m\n\e[0;38;5;56;48;5;234m[\w] \e[1m\$\e[0m '
fi

效果如下:

提示符中也支持嵌入命令和函数:

bash 复制代码
[root@ol9-vagrant vagrant]#PS1='[$(date)]'
[Wed Jan 21 04:05:00 AM UTC 2026]
[Wed Jan 21 04:05:01 AM UTC 2026]
[Wed Jan 21 04:05:01 AM UTC 2026]
[Wed Jan 21 04:05:02 AM UTC 2026]
[Wed Jan 21 04:05:02 AM UTC 2026]
[Wed Jan 21 04:05:02 AM UTC 2026]
[Wed Jan 21 04:05:02 AM UTC 2026]
[Wed Jan 21 04:05:03 AM UTC 2026]

[vagrant@ol9-vagrant ~]$ randnum()
> (
> echo $RANDOM
> )
[vagrant@ol9-vagrant ~]$ export PS1='[$(randnum)]'
[18210]
[11261]
相关推荐
hrrrrxeeeee11 小时前
文件读取→比对→风险标记,拆解采购 AI 完整工作链路
大数据·人工智能·机器学习·prompt
技灵AI1 天前
Wan 3.0 API怎么做多参考商品视频?从图片、视频、音频分工到30秒交付
人工智能·prompt·aigc·音视频·wan 3.0
“AI国潮设计-小江”2 天前
【SDXL实战】Python自动化生成3D潮汕美食IP,附ComfyUI工作流与商用变现思路
开发语言·人工智能·python·prompt·aigc
TK泰妞3 天前
2026TikTok带货视频怎么做?
人工智能·prompt·音视频
XLYcmy3 天前
Prompt 设计相关问题
网络安全·llm·prompt·agent·cot·漏洞检测·harness
七夜zippoe3 天前
Prompt 工程进阶:角色设定、任务分解、输出约束与示例引导
ai·prompt·openai·agent·工程进阶
小叶肥辉3 天前
LangChain链和LangGraph图的学习笔记【六】——提示语模板(3)——Few-Shot Prompting(少样本提示) 模板类
笔记·python·学习·langchain·prompt·aigc
znnnk3 天前
【AI应用】Agent:AI 为什么需要“自主决策”?
ai·prompt·agent·workflow·ai应用·skill·mcp
学习日记5254 天前
AI PPT生成系统实践:从自由生成到可控生成的工程演进复盘
人工智能·ai·prompt
这就是佬们吗4 天前
Function Calling 还是 MCP?先分清它们根本不是同一层的东西
人工智能·prompt·ai编程