天天看点

在 Linux 终端中自定义 Bash 配色和提示内容

现今,大多数(如果不是全部的话)现代 linux 发行版的默认 shell 都是 bash。然而,你可能已经注意到这样一个现象,在各个发行版中,其终端配色和提示内容都各不相同。

如果你一直都在考虑,或者只是一时好奇,如何定制可以使 bash 更好用。不管怎样,请继续读下去 —— 本文将告诉你怎么做。

<a target="_blank"></a>

命令提示符和终端外观是通过一个叫 <code>ps1</code> 的变量来进行管理的。根据 bash 手册页说明,ps1 代表了 shell 准备好读取命令时显示的主体的提示字符串。

ps1 所允许的内容包括一些反斜杠转义的特殊字符,可以查看手册页中 prmpting 部分的内容来了解它们的含义。

为了演示,让我们先来显示下我们系统中 <code>ps1</code> 的当前内容吧(这或许看上去和你们的有那么点不同):

<code>$ echo $ps1</code>

<code>[\u@\h \w]\$</code>

现在,让我们来了解一下怎样自定义 ps1 吧,以满足我们各自的需求。

根据手册页 prompting 章节的描述,下面对各个特殊字符的含义作如下说明:

<code>\u:</code> 显示当前用户的 用户名。

<code>\h:</code> 完全限定域名fully-qualified domain name(fqdn)中第一个点(<code>.</code>)之前的主机名。

<code>\w:</code> 当前工作目录的基本名,如果是位于 <code>$home</code> (家目录)通常使用波浪符号简化表示(<code>~</code>)。

<code>\$:</code> 如果当前用户是 root,显示为 <code>#</code>,否则为 <code>$</code>。

例如,如果我们想要显示当前命令的历史数量,可以考虑添加 <code>\!</code>;如果我们想要显示 fqdn 全称而不是短服务器名,那么可以考虑添加 <code>\h</code>。

在下面的例子中,我们同时将这两个特殊字符引入我们当前的环境中,命令如下:

<code>ps1="[\u@\h \w \!]\$"</code>

当按下回车键后,你将会看到提示内容会变成下面这样。可以对比执行命令修改前和修改后的提示内容:

在 Linux 终端中自定义 Bash 配色和提示内容

自定义 linux 终端提示符 ps1

现在,让我们再深入一点,修改命令提示符中的用户名和主机名 —— 同时修改文本和环境背景。

实际上,我们可以对提示符进行 3 个方面的自定义:

文本格式

前景色(文本)

背景色

0: 常规文本

30: 黑色

40: 黑色

1: 加粗文本

31: 红色

41: 红色

4: 下划线文本

32: 绿色

42: 绿色

33: 黄色

43: 黄色

34: 蓝色

44: 蓝色

35: 紫色

45: 紫色

36: 青色

46: 青色

37: 白色

47: 白色

我们将在开头使用 <code>\e</code> 特殊字符,跟着颜色序列,在结尾使用 <code>m</code> 来表示结束。

在该序列中,三个值(背景,格式和前景)由分号分隔(如果不赋值,则假定为默认值)。

此外,由于值的范围不同,指定背景,格式,或者前景的先后顺序没有关系。

例如,下面的 <code>ps1</code> 将导致提示符为黄色带下划线文本,并且背景为红色:

在 Linux 终端中自定义 Bash 配色和提示内容

修改 linux 终端提示符配色 ps1

虽然它看起来那么漂亮,但是这个自定义将只会持续到当前用户会话结束。如果你关闭终端,或者退出本次会话,所有修改都会丢失。

为了让修改永久生效,你必须将下面这行添加到 <code>~/.bashrc</code>或者 <code>~/.bash_profile</code>,这取决于你的版本。

<code>ps1="\e[41;4;33m[\u@\h \w]$ "</code>

尽情去玩耍吧,你可以尝试任何色彩,直到找出最适合你的。

(lctt 译注:原文的这种设置,不但会影响到提示符,也会影响到输入和显示的其它文字,因此应该在 ps1 设置中使用 <code>\e[0m</code> 来结束颜色设置。如:<code>ps1="\e[41;4;33m[\u@\h \w]$\e[0m "</code>)

原文发布时间为:2017-01-09

本文来自云栖社区合作伙伴“linux中国”

继续阅读