配置 Zsh 终端:Prompt 命令提示符
目录
本文介绍了在 macOS Terminal 终端中如何配置 zsh Prompt 命令提示符。
基本格式
Prompt 命令提示符的基本格式为:
|
|
以 %
接单个字符为一个基本参数,输出特定信息。其中
%n
:显示登录用户名。%m
:显示当前主机名,登录本地终端时显示本机名,登录远程服务器时显示服务器名。%~
:显示以~
开头的当前工作目录,其中~
为用户主目录$HOME
,数字指定显示路径的层数。%#
:当用户拥有管理员权限(root)时显示#
,否则显示%
。
上述参数也可以在 Terminal 终端中使用 print -P
命令输出查看。
配置文件
在 Terminal 中直接为 PROMPT
环境变量赋值,可临时改变提示符格式。重启 Terminal 窗口或打开一个新的 Terminal 窗口,仍会启用系统默认的命令提示符格式。
注意
zsh 使用环境变量
PS1
来定义命令提示符的格式,我们这里使用的环境变量 PROMPT
为其同义词。因此某些文章会使用环境变量 PS1
来定义命令提示符的格式。若希望每次开启一个新的 Terminal 窗口时使用同一套配置好的命令提示符,可在 zsh 配置文件 ~/.zshrc
中设置 PROMPT
参数。
基本参数
完整参数列表可在 zsh 用户手册 Prompt 章节 查看。
特殊字符
参数 | 输出 | 说明 | 补充 |
---|---|---|---|
%% |
% |
百分号 % |
|
%) |
) |
右括号 ) |
登录信息
主要用于远程服务器终端的 Prompt 显示。
参数 | 输出 | 说明 | 补充 |
---|---|---|---|
%l |
s001 |
用户登录的(tty)线程 | 剔除前缀 /dev/tty |
%M |
host.local |
完整主机名 | |
%m |
host |
简短主机名 | % 后可接一个整数,指定截取完整主机名中第几个 . 之前的内容 |
%n |
user |
登录用户名 | $USERNAME |
%y |
ttys001 |
用户登录的(tty)线程 | 剔除前缀 /dev/ |
终端状态
参数 | 输出 | 说明 | 补充 |
---|---|---|---|
%# |
% # |
当用户拥有管理员权限(root)时显示 # ,否则显示 % |
|
%? |
0 |
在提示符之前执行的最后一个命令的返回状态 | 命令成功执行后返回 0 |
%/ %d |
/Users/user/work |
当前工作目录 | % 后可接一个整数,指定显示的路径层数,负数则从根目录开始显示 |
%~ |
~/work |
当前工作目录 | 以 ~ 代替用户主目录,% 后可接一个整数,指定显示的路径层数 |
%! %h |
99 |
终端记录的历史命令数 | 历史命令存放在 ~/.zsh_history |
%. %c %C |
work |
当前工作目录的跟踪目录 | % 后可接一个整数,指定显示的路径层数 |
日期时间
参数 | 输出 | 说明 | 补充 |
---|---|---|---|
%D |
23-09-26 |
以 yy-mm-dd 格式显示日期 |
%D{string} 字符串 string 由 strftime 函数处理,自定义显示格式 |
%T |
23:33 |
以 24 小时制显示当前时间 | |
%t %@ |
11:33PM |
以 12 小时制显示当前时间 | 上午 AM ,下午 PM |
%* |
23:33:33 |
以 24 小时制显示当前时间 | 包括秒数 |
%w |
Tue 26 |
以 day-dd 格式显示日期 |
|
%W |
09/26/23 |
以 mm/dd/yy 格式显示日期 |
strftime
参数列表:
当前日期时间为:
|
|
- 世纪
参数 输出 说明 补充 %C
20
两位数世纪(00-99) - 年份
参数 输出 说明 补充 %G
2023
四位数年份(2023) 每周首日为周一 %g
23
两位数年份(00-99) 每周首日为周一 %Y
2023
四位数年份(2023) %y
23
两位数年份(00-99) - 月份
参数 输出 说明 补充 %B
September
月份全称 %b
%h
Sep
月份缩写 %m
09
两位数月份(01-12) - 周数
参数 输出 说明 补充 %U
39
两位数周数(00-53) 每周首日为周日 %V
39
两位数周数(01-53) 每周首日为周一 %W
39
两位数周数(00-53) 每周首日为周一 - 星期
参数 输出 说明 补充 %A
Tuesday
星期全称 %a
Tue
星期缩写 %u
2
一位数星期(1-7) 每周首日为周一 %w
2
一位数星期(0-6) 每周首日为周日 - 日期
参数 输出 说明 补充 %d
26
两位数日期(01-31) %e
26
日期(1-31) 空格补位 %j
269
三位数日期(001-366) - 小时
参数 输出 说明 补充 %H
23
24 小时制两位数小时(00-23) %I
11
12 小时制两位数小时(01-12) %k
23
24 小时制小时(0-23) 空格补位 %l
11
12 小时制小时(1-12) 空格补位 %p
PM
12 小时制指示 AM
或PM
- 分钟
参数 输出 说明 补充 %M
33
两位数分钟(00-59) - 秒钟
参数 输出 说明 补充 %S
33
两位数秒钟(00-59) - 时区
参数 输出 说明 补充 %Z
CST
时区缩写 %z
+0800
所在时区与 UTC 的间隔 - 格式
参数 输出 说明 补充 %n
换行 %t
Tab 制表符 %%
%
百分号 %-*
3
无补位 %_*
_3
空格补位 %0*
03
0
补位 - 预设
参数 输出 说明 补充 %D
09/26/23
%m/%d/%y
%F
2023-09-26
%Y-%m-%d
%R
23:33
%H:%M
%r
11:33:33 PM
%I:%M:%S %p
%T
23:33:33
%H:%M:%S
%v
26-Sep-2023
%e-%b-%Y
- 本地
参数 输出 说明 补充 %X
23:33:33
本地时间格式 %x
09/26/23
本地日期格式 %+
Tue Sep 26 23:33:33 CST 2023
本地时间与日期格式
视觉效果
基本格式为:
|
|
输出效果为:
Text Word
| 开始 | 结束 | 输出 | 说明 |
|:----:|:----:|:----:|:----:|
|`%B`|`%b`|**Text Word**|粗体|
|`%E`|||清除至行末|
|`%U`|`%u`|<u>Text Word</u>|下划线|
|`%S`|`%s`|<mark>Text Word</mark>|高亮,若定义了字体颜色,则高亮背景会继承字体颜色|
|`%F{color}`|`%f`|<span style="color:red;">Text Word</span>|前景(字体)颜色|
|`%K{color}`|`%k`|<span style="background-color:red;">Text Word</span>|背景颜色|
可选用的颜色
- 一般各种终端都接受的常用颜色名: black, red, green, yellow, blue, magenta, cyan 以及 white。
- 在终端中输入
echotc Co
,可查看终端支持的颜色总数,如256
,表示终端支持(0-255)的颜色编号。 - 在 Terminal 终端中输入
echo $TERM
也可确认,如输出xterm-256color
。
【参考】
- 查看基础 16 色以及 256 色色表。
- 256 Colors – Cheat Sheet – Xterm, HEX, RGB, HSL
- 256 Terminal colors and their 24bit equivalent (or similar)
条件判断
|
|
- 当
x
所指代的判断条件为真时,选取true-text
片段,否者选取false-text
片段。 - 其中
x
后的分隔符.
可用任意字符替代,但需保证true-text
片段中无相应字符。 x
前可有整数n
(默认n=0
),与具体判断符x
配合进行条件判断。true-text
和false-text
中可包含上述各种基本参数,也可嵌套条件判断。
一些简单的条件判读符 x
如下,详细列表请参考 zsh 用户手册 Prompt 章节。
判断符 | 真值条件 |
---|---|
! |
终端以管理员权限运行(%# = %(!.#.%%) ) |
? |
上一个命令的结束状态为 n (成功执行的命令的结束状态为 0) |
C / |
当前工作目录的绝对路径含至少 n 层(根目录 / 为 0 层) |
c . ~ |
当前工作目录的路径含至少 n 层(用户主目录以 ~ 代替) |
D |
当前月份为 n (1 月为 0) |
w |
当前星期为 n (周日为 0) |
d |
当前日期为 n (1-31) |
T |
当前小时数为 n (0-24) |
t |
当前分钟数为 n (0-59) |
右侧提示符
可自定义 RPROMPT
变量在终端右侧显示提示,其语法与 PROMPT
相同。
|
|
版本控制
zsh
集成了一些基本的版本控制系统,具体可参考Moving to zsh, part 6 – Customizing the zsh Prompt。
【参考】
一些大型的 zsh
主题项目,如 oh-my-zsh 以及 prezto 等,都集成了能够显示详细 Git 版本信息的模组。
【参考】