Linux shell 自定义超级好看的颜文字终端提示符

800 阅读2分钟

Snipaste_2022-08-05_11-41-47.png

Linux 终端提示符信息与 $PS1 变量有关

echo $PS1

直接 echo 变量可以看到以下输出,下面详细分析一个这个变量

Snipaste_2022-08-05_10-48-09.png

字符含义
\a以ASCII格式编码的铃声,当遇到这个字符的时候,计算机会发出嗡嗡文的响声
\d以日,月,天的格式显示当前日期,例如:Sat Oct 17
\h本地主机名,不带末尾的域名
\H完整的主机名称
\j运行在当前shell会话中的工作数量
\I当前终端的设备名称
\n换行符
\r回车符
\sshell程序名称
\t以hours:minutes:seconds的格式显示当前时间,24小时制
\T同上,12小时制
@以AM/PM的格式显示当前时间
\A以hours:minutes的格式显示当前时间,24小时制
\u当前用户名
\vshell程序的版本号
\Vshell程序的版本和版本号
\w当前的工作路径
\W当前工作路径的最后部分
!当前命令的历史号
#当前shell会话中的命令数量
$显示一个‘$’符号,在超级用户登录的情况下会显示一个‘#’字符
\[表示一个或多个非打印字符的开始,意思就是这个符号后面的内容不会在终端中显示,一般用来更改文本的颜色
\]非打印字符序列结束

对照上面的表格仔细分析一下这个输出结果。

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

因为 [] 中的都是非显示字符,直接忽视,简化过后的结果如下,可以看到与输出正好对应。

\u@\h:\w\$

明白原理之后就可以自定义一些好看的终端提示符,例如加上好看的颜文字

$PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W: (〃ω〃)\[\033[00m\]\$"

Snipaste_2022-08-05_11-20-22.png

参考资料:

有没有好看的颜文字!?

Linux/Ubuntu 自定义shell提示符