前言
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…