Mac terminal 【PS1 命令提示符】格式

421 阅读2分钟

前言

terminal 中虽然提供了几个主题,但所有主题都有一个问题:
输出的文字全是一个颜色(绿色),用起来不方便,识别性非常差。

因为当下【系统的命令提示符】、【输入】、【输出】全是一个颜色。
当你进行一次操作后,无法一眼识别出此次操作所输出内容的范围,尤其是当输出的内容很多,需要上下滚动时。
此时,如果【系统的命令提示符】的显示格式能自定义,则能大大提升使用性。

PS1(Prompt String 1)介绍

在 Linux/Unix 中,PS1是一个【环境变量】,用来定义 shell命令提示符 的显示内容和格式。
当你在终端中输入命令时,PS1 定义的就是那个通常显示在光标左侧的提示符。
PS1可以包含纯文本和特殊的转义序列。

转义序列

转义序列以反斜杠开始,用来插入例如日期、时间、用户名、当前目录等动态信息。

##### bash
\d    现在的系统日期(格式为weekday month date,例如:“Mon Aug 1” )
\t    现在的系统时间(24小时制,hours:minutes:seconds 的格式)
\T    以12小时制表示当前时间

  
\h    本地机的主机名,但不带末尾的域名
\H    完整的主机名

\#    命令号(Comannd Number)

\u    用户名

\v    bash 的版本信息

\w    当前完整的工作目录(【家】目录以 ~ 代替)
\W    当前工作目路径的最后部分,也就是目录名

\$    提示符. 如果用户是root,显示 #。
             如果用户是普通用户,显示 $
             
##### zsh
# 下面是些比较常用的转义变量,更多详细:
# https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html
%T        系统时间(时:分)  
%*        系统时间(时:分:秒)     
%D        系统日期(年-月-日)          
%n        你的用户名                         
%B - %b   开始到结束使用粗体打印              
%U - %u   开始到结束使用下划线打印                 
%d        你目前的工作目录                            
%~        你目前的工作目录相对于~的相对路径(可能在某些zsh版本可能造成乱码) 
%M        计算机的主机名                             
%m        计算机的主机名(在第一个句号之前截断)                 
%l        你当前的tty

颜色设置

可以通过设置 PS1 变量,使【命令提示符】成为彩色。
在PS1中设置字符序列颜色的格式为:

\[\e[F;Bm\]

其中 F 为字体颜色,编号30~37
B 为背景色,编号40~47
可通过 \e[0m 关闭颜色输出。
注意,当B为 1 时,将显示加亮加粗的文字。

例子

# 在 ` ~/.bashrc ` 配置文件末尾加入下面内容
export PS1="\[\033[01;32m\]\u@\W\$\[\033[00m\]"

# 在 ` ~/.zshrc ` 配置文件末尾加入下面内容
PS1="%{%F{131}%}%n%{%F{216}%}@%{%F{202}%}%m %{%F{226}%}%1~ %{%f%}$ "

重启 terminal 后,发现没生效。这是为什么?

PS1 在线生成器网站

Bash Prompt Generator
robotmoon.com/bash-prompt…