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

Aaron Kili 的头像

·

·

·

16,895 次阅读

现今,大多数(如果不是全部的话)现代 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 个方面的自定义:

文本格式前景色(文本)背景色

作者简介:

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中国 荣誉推出

3 条回复

  1. 来自内蒙古的 Chrome 54.0|Windows 7 用户 的头像
    来自内蒙古的 Chrome 54.0|Windows 7 用户

    我是在 ~./.bashrc 中这样的写的: PS1="e[;1;31m[u@h W]$e[0m ",写完后发现 CTRL + u 不好用了,前面总是留一段,清除不干净了,不知道是为什么?

    来自呼和浩特
  2. 来自内蒙古的 Chrome 54.0|Windows 7 用户 的头像
    来自内蒙古的 Chrome 54.0|Windows 7 用户

    sorry,更正一个错误:~/.bashrc

    来自呼和浩特
  3. 来自四川成都的 Chrome 55.0|GNU/Linux 用户 的头像
    来自四川成都的 Chrome 55.0|GNU/Linux 用户

    0m 双引号之间有个空格。不过留个空格挺好。

    来自成都

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注