在 Linux 终端中自定义 Bash 配色和提示内容
创始人
2024-03-01 18:37:29
0

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

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

PS1 Bash 环境变量

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

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

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

$ echo $PS1
[\u@\h \W]\$

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

自定义 PS1 格式

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

  • \u: 显示当前用户的 用户名
  • \h: 完全限定域名 Fully-Qualified Domain Name (FQDN)中第一个点(.)之前的主机名
  • \W: 当前工作目录的基本名,如果是位于 $HOME (家目录)通常使用波浪符号简化表示(~)。
  • \$: 如果当前用户是 root,显示为 #,否则为 $

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

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

PS1="[\u@\H \W \!]\$"

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

Customize Linux Terminal Prompt PS1

自定义 Linux 终端提示符 PS1

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

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

文本格式前景色(文本)背景色
0: 常规文本30: 黑色40: 黑色
1: 加粗文本31: 红色41: 红色
4: 下划线文本32: 绿色42: 绿色
33: 黄色43: 黄色
34: 蓝色44: 蓝色
35: 紫色45: 紫色
36: 青色46: 青色
37: 白色47: 白色

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

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

建议阅读: 在 Linux 中学习 Bash shell 脚本

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

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

PS1="\e[41;4;33m[\u@\h \W]$ "

Change Linux Terminal Color Prompt PS1

修改 Linux 终端提示符配色 PS1

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

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

PS1="\e[41;4;33m[\u@\h \W]$ "

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

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

小结

在本文中,我们讲述了如何来自定义 Bash 提示符的配色和提示内容。如果你对本文还有什么问题或者建议,请在下面评论框中写下来吧。我们期待你们的声音。


作者简介:

Aaron Kili 是一位 Linux 及 F.O.S.S 的狂热爱好者,一位未来的 Linux 系统管理员,web 开发者,而当前是 TechMint 的原创作者,他热爱计算机工作,并且信奉知识分享。


via: http://www.tecmint.com/customize-bash-colors-terminal-prompt-linux/

作者:Aaron Kili 译者:GOLinux 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不正确的密码导致PS1。
问题描述:当用户输入的密码不正确时,导致PS1(命令提示符)显示错...
2025-01-11 18:00:19
Bitbucket调用We...
这种情况通常是与环境变量相关的问题。请尝试在 PHP 代码中指定 ...
2024-12-19 12:00:49
避免在终端/命令提示符中运...
在终端或命令提示符中运行FFmpeg可能会遇到一些问题,因此最好使...
2024-12-17 17:00:58
标题中的PS1不会覆盖提示...
要解决标题中的问题,可以通过在提示符中指定一个新的PS1来覆盖标题...
2024-12-11 06:01:40
编译后命令提示符颜色变化
要实现编译后命令提示符颜色变化,可以使用ANSI转义序列来控制命令...
2024-12-08 07:30:40
编写shell脚本实现SS...
在脚本中指定SSH连接的远程主机地址和账号信息。示例代码如下:#!...
2024-12-05 16:30:44

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...