如何在 Linux 终端提示符中自定义 Bash 颜色和内容
如今,Bash 是大多数(如果不是全部)现代 Linux 发行版中的默认 shell。但是,您可能已经注意到,终端中的文本颜色和提示内容可能因发行版而异。
建议阅读: 5 个最常用的 Linux 开源 shell
如果您想知道如何自定义它以获得更好的可访问性或仅仅是突发奇想,请继续阅读 - 在本文中,我们将解释如何做到这一点。
PS1 Bash 环境变量
命令提示符和终端外观由名为 PS1
的环境变量控制。根据 Bash 手册页,PS1 表示 shell 准备好读取命令时显示的主要提示字符串。
PS1 中允许的内容由几个反斜杠转义的特殊字符组成,其含义在手册页的 PROMPTING 部分中列出。
为了说明这一点,让我们在系统中显示 PS1
的当前内容(在您的情况下可能会有所不同):
echo $PS1
[\u@\h \W]$
我们现在将解释如何根据我们的需求自定义 PS1。
自定义 PS1 格式
根据手册页中的 PROMPTING 部分,这是每个特殊字符的含义:
\u:
当前用户的用户名。\h:
完全限定域名中的主机名,直到第一个点(.)。\W:
当前工作目录的基本名称,其中$HOME缩写为波形符(~)。\$:
如果当前用户是root,则显示#,否则显示$。
例如,如果我们想显示当前命令的历史编号,我们可能需要考虑添加 \!
,或者如果我们想显示 FQDN 而不是 \H
服务器短名称。
在以下示例中,我们将通过执行以下命令将两者导入到当前环境中:
PS1="[\u@\H \W \!]$"
当您按Enter键时,您将看到提示内容发生如下变化。对比执行上述命令前后的提示:
现在,让我们更进一步,更改命令提示符中的用户和主机名的颜色 - 包括文本及其周围的背景。
实际上,我们可以从三个方面来定制提示:
Text Format | Foreground (text) color | Background color |
0: normal text | 30: Black | 40: Black |
1: bold | 31: Red | 41: Red |
4: Underlined text | 32: Green | 42: Green |
33: Yellow | 43: Yellow | |
34: Blue | 44: Blue | |
35: Purple | 45: Purple | |
36: Cyan | 46: Cyan | |
37: White | 47: White |
我们将在开头使用 \e
特殊字符,在结尾使用 m
来指示接下来是颜色序列。
在此序列中,三个值(背景、格式和前景)用逗号分隔(如果未给出值,则假定为默认值) 。
建议阅读:学习 Linux 中的 Bash Shell 脚本
此外,由于值范围不同,因此您首先指定哪一个(背景、格式或前景)并不重要。
例如,以下 PS1
将导致提示以黄色带下划线的文本显示,背景为红色:
PS1="\e[41;4;33m[\u@\h \W]$ "
尽管看起来不错,但这种自定义只会持续当前用户会话。如果您关闭终端或退出会话,所做的更改将会丢失。
为了使这些更改永久生效,您必须根据您的发行版将以下行添加到 ~/.bashrc
或 ~/.bash_profile
中:
PS1="\e[41;4;33m[\u@\h \W]$ "
请随意尝试不同的颜色,找到最适合您的颜色。
概括
在本文中,我们解释了如何自定义 Bash 提示符的颜色和内容。如果您对这篇文章有疑问或建议,请随时使用下面的评论表与我们联系。我们期待您的回音!