您的Ubuntu系统使用作为默认的终端应用程序bash或dash。
您可以根据一个默认提示输入命令,该提示通常在一些预定义的颜色主题中列出您的用户名、主机名和当前目录。
bash为提示符提供了许多自定义选项,您不仅可以使用这些选项在提示符中集成各种特性,还可以使用不同的颜色区分它们。
在本文中,我们将使用各种示例对终端应用程序的提示符进行自定义和重新着色,使您能够根据自己的需要进行操作。我们正在Ubuntu 18.04 LTS系统上运行本文描述的命令和过程。
查看当前Bash提示符配置
当您通过Dash或Ctrl+Alt +T快捷键打开终端时,您会看到如下提示:
linuxidc@linuxidc:~$
此默认格式列出用户名、主机名以及用户的当前目录。bash从bashrc文件中获取此配置,该文件是为每个用户在其主目录中单独设置的。你可以这样打开这个文件:
vim ~/.bashrc
位置:/home/username/.bashrc
您还可以使用任何其他文本编辑器打开此文件。
这是配置文件的样子。我们在这里向您展示文件的相关部分。
您在上面的图像中看到的PS1变量具有bash提示符的所有必需配置。我们首先解释一下这个变量中的字符是什么。您可以在else语句后列出的PS1变量中清楚地查看此变量。
- \u-这表示当前用户的用户名
- \h:这表示从完全限定域名中提取的当前用户的主机名。
- \w:这表示当前工作目录。主目录用波浪号~符号表示。
- \$:这表示您是普通用户($)还是root用户(#)。
您还可以通过回显其值来查看PS1变量的配置,如下所示:
自定义Shell提示符
在了解了提示信息存储在何处以及PS1变量描述了什么之后,让我们看看如何编辑它,以便定制bash提示符。
在编辑PS1变量之前,重要的是将其默认内容存储在一个新变量中。如果出现错误,这将帮助我们恢复提示符的原始配置。在终端输入以下命令:
$ DEFAULT=$PS1
现在,变量“DEFAULT”具有恢复默认提示设置所需的所有信息。
现在让我们用PS1变量进行一些实验。输入以下命令:
$ PS1="\u\$ "
PS1的这个新值对您的提示符有以下效果:
现在您只能看到您的用户名和根用户信息,没有任何颜色,因为还没有设置任何颜色信息。
让我们输入以下命令,以便提示符也列出工作目录
$ PS1="\u:\w\$ "
PS1的这个新值对您的提示符有以下效果:
由于我的工作目录是home,我只能看到〜符号。在其他目录中,比如www.linuxidc.com,我的提示将显示以下信息:
将提示设置回默认值
由于我们将PS1变量的原始配置存储在默认变量中,所以可以通过将默认变量的值提供给PS1,将PS1的值设置回默认值。
PS1=DEFAULT
您还可以定制什么?
如果希望提示包含特定的自定义文本,可以使用以下语法:
PS1="[custom text] \u@\h:\w\$ "
例子:
我已经设置了我的提示,包括一个自定义消息如下:
linuxidc@linuxidc:~$ PS1="Linux公社www.linuxidc.com \u@\h:\w\$ "
Linux公社www.linuxidc.com linuxidc@linuxidc:~$
你可以在提示符中加入以下基本字符:
字符 | 用途 |
\d | 以日、月为单位日期格式。 |
\e | ASCII转义字符 |
\a | 转义字符。 |
\h | 当前用户的主机名直到'.' |
\H | 当前用户的主机名。 |
\l | 终端设备的基本名称。 |
\j | 由shell运行的作业的数量。 |
\r | 回车。 |
\n | 一个新行。 |
\u | 当前用户的用户名。 |
\v | Bash版本。 |
\! | 打印正在运行的命令的历史记录编号。 |
您可以通过以下命令在提示中包括当前系统时间:
PS1="\A\u: \w\$ "
PS1的这个新值对您的提示符有以下效果:
您还可以自定义提示符,以包含命令的输出;这使您可以在提示符中包含***的选项。
语法:
$ PS1="\u@\h on `[command]` \w\$ "
例:
在此示例中,我将设置提示以包括当前用户所属的主组的名称。
$ PS1="\u@\h on `id -gn` \w\$ "
着色提示
自定义提示后,您会发现事情可能看起来有些混乱。一个明显的原因是,如果它们都以相同的颜色列出,那么将一个特征与另一个特征区分开来并不容易。现在让我们学习如何着色提示,使其更令人愉悦。
为了向一个或多个特征添加颜色,PS1变量包括颜色标记。以下图像中突出显示的文本是颜色标记。
这是颜色标记的格式:
\[\033[COLOR]m\]
例如,我们在默认终端提示符中看到的默认用户名和主机名是绿色的,这是因为下面的颜色标签:
\[\033[01;32m\]\u@\h\
您可以针对bash提示符特性更改此颜色值,以赋予它一个新的颜色,或者向没有任何颜色的特性添加一个新的颜色标记。
下面是一些常见的颜色及其值:
颜色 | 值 |
Green | 32 |
Red | 31 |
Black | 30 |
Blue | 34 |
Cyan | 36 |
Purple | 35 |
Yellow | 33 |
White | 37 |
例:
以下命令将提示符变为红色,因为我们在颜色标记中指定了31(红色):
$ PS1="\[\033[31m\]\u@\h:\w$ "
在提示中使用文本样式
您可以通过为颜色标记指定属性值来为提示文本添加样式。以下是具有属性的颜色标记的格式:
\[\033[ATTRIBUTE; COLORm\]
您可以为提示文本使用以下属性值:
属性值 | 用途 |
0 | 标准文本(即使没有设置属性,这也是默认值) |
1 | 在Ubuntu终端中,此值指定粗体文本 |
2 | 暗淡文本 |
4 | 文本下划线 |
5 | 闪烁的文本 |
7 | 反转文本和背景颜色 |
8 | 隐藏的文本 |
例子:
可以使用以下命令对bash提示加下划线:
$ PS1="\[\033[4;31m\]\u@\h:\w$ "
值4表示我们想要“下划线”文本。
对提示符进行***更改
到目前为止执行的命令只会更改当前bash会话的提示符。在您尝试了文本自定义和提示符的颜色化之后,您需要编辑bashrc文件。
打开.bashrc文件,复制if下PS1行中您最终确定的PS1值;然后行。在下面的图片中,我刚刚将bash提示符的颜色更改为红色:
按Ctrl+X保存文件,然后按y保存。对bash提示符的更改现在将是***性的。退出终端并重新打开,可以看到bash提示符仍然与您设置的一样。
保存文件
在完成本教程的练习之后,您可以出色地定制bash提示符。然后,您可以设置颜色来区分您在提示符中包含的不同特性。这样,每次使用bash提示符时,您都可以查看和使用这些有用的信息。