在 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 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...