现今,大多数(如果不是全部的话)现代 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

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

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

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

  2. linux 自定义shell命令,如何在Linux中自定义bash命令提示符

    前言 众所周知, bash (the B ourne- A gain Sh ell)是目前绝大多数 Linux 发行版使用的默认 shell.本文将会介绍如何通过添加颜色和样式来自定义 bash 命令 ...

  3. linux终端中使用ctrl+c和ctrl+v

    根据参考链接的解释, 因为ctrl+c被bash shell解释为中断程序的运行, 所以在linux终端中想要粘贴复制需要使用的快捷键是: windows Linux 复制 Ctrl+C Ctrl+S ...

  4. 5 个用于在 Linux 终端中查找域名 IP 地址的命令

    5 个用于在 Linux 终端中查找域名 IP 地址的命令 本教程介绍了如何在 Linux 终端验证域名或计算机名的 IP 地址.本教程将允许你一次检查多个域.你可能已经使用过这些命令来验证信息.但是 ...

  5. linux文件夹缩略图不显示,在Linux终端中使用lsix显示缩略图图像

    本文介绍lsix的安装及使用方法,目标是在Linux终端中显示缩略图图像.Fim是一个轻量级的CLI图像查看器应用程序,用于从命令行显示各种类型的图像,如bmp.gif.jpeg和png等.本文要介绍 ...

  6. linux终端打印保存到文件,Linux 终端中命令输出保存到文件中的方法

    当你在 Linux 终端中运行命令或脚本时,它会在终端中打印输出方便你立即查看. 有时你需要将输出保存到文件中以备将来参考.当然你可以在 Linux 终端中复制和粘贴,但是有更好的方法可以在 Linu ...

  7. Linux | 终端显示为bash-4.1$以及提示bash:command not found的解决方法

    本文总结如何解决 Linux 终端显示为 bash-4.1 1 以及提示 bash: command not found 情形 2 ' 3 的解决方法. Updated: 2022 / 7 / 18 ...

  8. linux中bash的功能主要有,Linux系统中的Bash功能的介绍

    今天小编要跟大家分享的文章是关于Linux系统中的Bash功能的介绍.一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无 ...

  9. linux的ftp停不下来了,FTP上传时经常中断,怎么办? 在Linux终端中使用ftp时总是出现connection refuse......

    导航:网站首页 > FTP上传时经常中断,怎么办? 在Linux终端中使用ftp时总是出现connection refuse... FTP上传时经常中断,怎么办? 在Linux终端中使用ftp时 ...

最新文章

  1. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
  2. Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值
  3. 判断Oracle中某个字段是否含有数字
  4. 简介struct cmsghdr结构
  5. python(matplotlib8)——图中图(在figure中画多个坐标图),次坐标(两个y轴)
  6. LeetCode 904. 水果成篮(滑动窗口)
  7. java的equals方法_Java Date equals()方法与示例
  8. 用PHP控制您的浏览器cache
  9. sql server 群集_SQL Server 2014 –安装群集实例–分步(3/3)
  10. Ubuntu之systemd延时启动服务
  11. java某些基础知识点整理
  12. 2018中国开源云超级英雄评选,等你报名!
  13. CTFshow新春欢乐赛--web6--反序列化字符串逃逸
  14. 单片机(中断系统-串口通信)
  15. 【linux】运行run文件显示cannot execute binary file
  16. 2021乌镇互联网大会,数字联盟解读网络安全与信息保护
  17. ubuntu:下载ubuntu内核
  18. 关于一个web站点的欢迎页面
  19. 转义字符 lt; gt; 等等
  20. 手写实现简单版IOC

热门文章

  1. PHP注册登录系统(一)-极简
  2. 亚信卸载-无需密码卸载
  3. 【区块链】【IOT】深度解读物联网区块链“IOTA”:不仅解决IoT痛点,还解决区块链痛点
  4. 舒城中学2021年高考成绩查询,舒城教育信息网——舒城县教育局关于对2019年荣获高考目标奖的学校和个人表彰的通报...
  5. 机械专业转嵌入式软件经历
  6. 计算机网页设计实习报告怎么写,网页设计实习报告.docx
  7. 微服务分布式构架开发实战PDF,阿里架构师推荐,快快收藏吧
  8. AIE功能介孔二氧化硅/环糊精辅助的荧光二氧化硅纳米粒子/α-环糊精改性SiO2纳米微球/基于MOFs或中空介孔二氧化硅复合载体
  9. 如何做AI开源项目?零基础到100star
  10. python发送soap报文_使用Python将带附件的XML发送到SOAP ws