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

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

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

PS1 Bash 环境变量

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

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

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


  1. $ echo $PS1 
  2. [\u@\h \W]\$ 

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

自定义 PS1 格式

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

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

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

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


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

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

自定义 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 将导致提示符为黄色带下划线文本,并且背景为红色:


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

修改 Linux 终端提示符配色 PS1

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

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


  1. 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 的原创作者,他热爱计算机工作,并且信奉知识分享。

作者:Aaron Kili

来源:51CTO

时间: 2024-12-23 02:22:32

在Linux终端中自定义Bash配色和提示内容的相关文章

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

现今,大多数(如果不是全部的话)现代 Linux 发行版的默认 shell 都是 Bash.然而,你可能已经注意到这样一个现象,在各个发行版中,其终端配色和提示内容都各不相同. 如果你一直都在考虑,或者只是一时好奇,如何定制可以使 Bash 更好用.不管怎样,请继续读下去 -- 本文将告诉你怎么做. PS1 Bash 环境变量 命令提示符和终端外观是通过一个叫 PS1 的变量来进行管理的.根据 Bash 手册页说明,PS1 代表了 shell 准备好读取命令时显示的主体的提示字符串. PS1 所

在Linux终端中查看公有IP的方法详解

  首先回顾一下一般的查看IP的命令: ifconfig Linux查看IP地址的命令--ifconfig ifconfig命令用于查看和更改网络接口的地址和参数 $ifconfig -a lo0: flags=849 mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863 mtu 1500 inet 211.101.149.11 netmask ffffff00 broadcast 211.101.149.255 ether 8:0:2

如何在Linux终端中修复U盘驱动器问题

U 盘想必在大家的日常生活和工作中都已经不可或缺了,它让我们的文件维护和转移更加方便容易.但随着频繁使用,有可能会出现文件系统错误.坏块.坏扇区而影响正常使用的情况.对于 Windows 用户来说,修复此类 U 盘问题有专用的图形化工具使用,而 Linux 用户就相对麻烦一点,本文我们就介绍如何在 Linux 终端中修复 U 盘问题. 当然,本文中介绍的方法不仅适用于 USB 驱动器,同时也适用于其它接口类型的硬盘.但在操作前请自行对重要数据进行备份,自己的数据自己负责. 使用fsck移除U盘中

lolcat :一个在 Linux 终端中输出彩虹特效的命令行工具

那些相信 Linux 命令行是单调无聊且没有任何乐趣的人们,你们错了,这里有一些有关 Linux 的文章,它们展示着 Linux 是如何的有趣和"淘气" . Linux命令及Linux终端的20个趣事 终端中的乐趣:6个有趣的Linux命令行工具 Linux终端的乐趣之把玩字词计数 在本文中,我将讨论一个名为"lolcat"的小工具 – 它可以在终端中生成彩虹般的颜色. 为终端生成彩虹般颜色的输出的 Lolcat 命令 何为 lolcat ? Lolcat 是一个针

在Linux终端中使用后台运行模式启动程序的方法

  我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. 如果是使用Ubuntu的话,你可以利用CTRL+ALT+T组合键打开终端.当然你也可以使用超级键(Windows键)打开Dash,搜索"TERM",然后点击"Term"图标来打开终端窗口. 对于其他的桌面环境来说,例如XFCE.KDE.LXDE.Cinnamon以及MATE,你可以在菜单中找到终端.有些环境会在停靠栏或者面板上面包含终端图标. 通常情况下,你可以在终端里面

谁需要GUI?快看Linux 终端生存之道

完全在 Linux 终端中生存并不容易,但这绝对是可行的. 处理常见功能的最佳 Linux shell 应用 你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件,只有文本 -- 在 Linux shell 中,除了文本还是文本.这可能并不容易,但这是绝对可行的.我最近尝试完全在 Linux shell 中生存30天.下边提到的就是我最喜欢用的 shell 应用,可以用来处理大部分的常用电脑功能(网页浏览.文字处理等).这些显然有些不足,因为纯文本操作实在是有

个性化您的Ubuntu Linux终端

问题发现 前段时间把Python程序在终端中输出设置着实改了一通,见前几天的一篇博客 Python实现设置终端显示颜色.粗体.下划线等效果 感觉世界瞬间充满了色彩,但是还是不爽,因为最关键的是,我们最最亲爱的终端是黑白的.... 于是....我希望"他"能够充满色彩,我还是一如既往的坏. Linux终端颜色显示设置 原理依旧是Linux终端下的颜色设置在Linux终端中,使用转义序列来进行如上所述的显示,转义序列以ESC开头,即ASCII码下的\033,其格式为: \033[显示方式;

帮助你提升效率的Linux终端快捷操作汇总

很多普通 Linux 桌面用户都对使用终端感到排斥和恐惧,其实它没大家想的那么复杂,很多常见操作都可以直接在终端中进行,如:安装软件.升级系统等. 无论你是新手还是 Linux 终端使用的老鸟,小编在此为大家总结了提升终端命令执行效率的快捷操作汇总,希望能帮助你学习和提升效率. 移动定位光标 在终端中移动光标和定位似乎非常不便,其实不是你想的那样,有很多种方式可以让键盘成为你的好朋友,只是需要掌握正确的方法而已. 定位单词 在长段的命令中,使用 Ctrl + ← 和 Ctrl + → 可快速将光

Linux驱动中completion接口浅析(wait_for_complete例子,很好)【转】

转自:http://blog.csdn.net/batoom/article/details/6298267  completion是一种轻量级的机制,它允许一个线程告诉另一个线程工作已经完成.可以利用下面的宏静态创建completion:                         DECLARE_COMPLETION(my_completion);                 如果运行时创建completion,则必须采用以下方法动态创建和初始化: