【TIL】 浅谈 PS1:自定义 Bash 提示行

今天,我在工作中我遇到一个问题,需要修改 Bash 的默认提示行。

于是在网上稍微收集了一些资料,那么接下来,就让我们仔细了解一下如何自定义 bash 提示符

一、PS1: Bash 的首行提示

首先,我们来看一下默认的提示符:

pilot@raspberrypi:~ $

其实,提示符是由一个名为 PS1 的环境变量定义的:

pilot@raspberrypi:~ $
|      |          |
|      |          当前目录(完整路径)
|      主机名
用户名

PS1='\u@\h:\w \$'

1.1 提示符变量

以下是一些特殊符号:

  • \u:用户名
  • \h:主机名
  • \w:当前工作目录(完整路径)
  • \W:当前工作目录(仅文件夹名)
  • \$:用户显示 ‘$’,root 显示 ‘#’

虽然这个默认提示符看起来还行,但在当我拥有多个机器时,它无法指示我到底在哪个机器上。

于是我们可以添加机器编号到提示符中,如下所示:

p1|pilot@raspberrypi:~ $
|    |    |
|    |    主机名
|    用户名
测试平台

TEST_PLATFORM='p1'
PS1='$TEST_PLATFORM|\u@\h:\w \$'

1.2 提示符样式

为了提升测试人员和开发者的体验,我们来继续优化这个提示符,添加一些样式来区分不同信息。

1.2.1 颜色代码

  • \e[0;30m:黑色
  • \e[0;31m:红色
  • \e[0;32m:绿色
  • \e[0;33m:黄色
  • \e[0;34m:蓝色
  • \e[0;35m:紫色
  • \e[0;36m:青色
  • \e[0;37m:白色
  • \e[0m:重置所有样式
p1|pilot@raspberrypi:~ $
|    |    |
|    |    主机名(蓝色)
|    用户名(绿色)
测试平台(黄色)

TEST_PLATFORM='p1'
PS1='\e[0;33m$TEST_PLATFORM\e[0m|\e[0;32m\u\e[0;30m@\e[0;34m\h\e[0;30m:\w \$'

1.2.2 字体粗细

除了颜色,我们还可以定义字体的粗细:

  • 红色:\e[0;32m
  • 粗体红色:\e[1;32m

1.2.3 超链接

我们还可以在提示符中打印超链接:

# 超链接开始:\e]8;;
# 超链接结束:\e]8\\
# 结束链接:\e]8;;\e\\

# 示例超链接
echo -e "\e]8;;http://example.com\e\\点击这里\e]8;;\e\\"

1.3 更深入了解:ANSI 转义码(ESC)

在自定义提示符后,我对 \033[0;30m 代码产生了好奇。其实,这些以 \033 开头的编码被称为 ANSI 转义码

颜色和样式只是 ANSI 转义码的一小部分功能。它们能够让用户完全控制终端中的一切,包括光标控制和擦除功能等。

若想要了解更多,可以看看 fnky 的 ANSI Gist

二、关于 PS1:为什么叫 PS1?

PS1Primary Prompt String 的缩写,表示默认交互提示符,终端默认打印的那一行。

其他提示符字符串包括:

  • PS2:续行提示符,当我们换行时,终端在开头打印的那个符号,默认是 >
  • PS3:在 shell 脚本中用于“select”的提示符,当出现脚本选择时,最下面提问的字符,默认是:#?
  • PS4:当我们在脚本开头配置 set -x 时,会打印所有执行的代码行,其前缀由 PS4 来定义,默认是:+

这里有一些更详细的资料:

三、总结

通过自定义 Bash 提示符,我们可以提高使用体验,使其更具信息性和可读性。
希望本文能够有所帮助,感谢您的阅读!

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值