Linux Bash 提示符的一些骚操作
创始人
2024-03-01 20:13:00
0

一些能让你自定义 Bash 提示符的黑科技

Bash prompt tips and tricks

当你在 Linux 环境下打开一个 Shell 终端时,会看到命令行中出现了类似下面的一个 Bash 提示符:

[user@$host ~]$

你知道命令行提示符其实是可以自己设置添加许多非常有用的信息的吗?在这篇文章中我就会教你如何自定义自己的 Bash 命令行提示符,想看的话就接着看吧~

如何设置 Bash 提示符

Bash 提示符是通过环境变量 PS1 ( 提示符字符串 1 Prompt String 1 ) 来设置的,它用于交互式 shell 提示符。当然如果你需要更多的输入才能完成一个 Bash 命令时,PS2 环境变量就是用来设置多行提示符的:

[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ "
[Linux Rulez] export PS2="... "
[Linux Rulez] if true; then
... echo "Success!"
... fi
Success!

在哪里设置 PS1 的值?

PS1 就是一个普通的环境变量,系统默认值设置在 /etc/bashrc 中,在我的系统中,默认提示符通过以下命令来设置的:

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

它判断 PS1 是否是系统的默认值 \s-\v$ ,如果是的话则将值设置为 [\u@\h \W]\$。(LCTT 译注:注意命令中用 \ 做了转义。)

但如果你想要自定义提示符,不应该修改 /etc/bashrc ,而是应该在你的主目录下将自定义命令加到 .bashrc 文件中。

上面提到的 \u\h\W\s\v 是什么意思?

man bash 中的 PROMPTING 章节中,你能够找到所有 PS1PS2 相关的特殊字符的描述,以下是一些比较常用的:

  • \u:用户名
  • \h:短主机名
  • \W:当前你所在的目录的名称(basename),~ 表示你的主目录
  • \s:Shell 名字(bash 或者 sh,取决于你的 Shell 的名字是什么)
  • \v:Shell 的版本号

还有哪些特殊的字符串可以用在提示符当中

除了上面这些,还有很多有用的字符串可以用在提示符当中:

  • \d:将日期扩展成 “Tue Jun 27” 这种格式
  • \D{fmt}:允许自定义日期格式——可通过 man strftime 来获得更多信息
  • \D{%c}:获得本地化的日期和时间
  • \n:换行(参考下面的多行提示符)
  • \w:显示当前工作目录的完整路径
  • \H:当前工作机器的完整主机名

除了以上这些,你还可以在 Bash 的 man 页面的 PROMPTING 部分找到更多的特殊字符和它的用处。

多行提示符

如果你的提示符过长(比如说你想包括 \H\w 或完整的日期时间时 ),想将提示符切成两行,可以使用 \n 将提示符切断成两行显示,比如下面的多行的例子会在第一行显示日期、时间和当前工作目录,第二行显示用户名和主机名:

PS1="\D{%c} \w\n[\u@\H]$ "

还能再好玩点吗?

人们偶尔也想将提示符变成彩色的。虽然我觉得彩色提示符让人分心、易怒,但是也许你很喜欢。如果我们想将日期变成红色的,目录变成青蓝色,用户名搞一个黄色背景,你可以这样做:

PS1="\[\e[31m\]\D{%c}\[\e[0m\]
     \[\e[36m\]\w\[\e[0m\]\n[\[\e[1;43m\]\u\[\e[0m\]@\H]$ "
  • \[..\] :表示一些非打印字符
  • \e[.. :转义字符,后面的跟着的特定的转义字符串在终端中表示颜色或者其他意思
  • 31m :表示红色字体(41m 表示是红色背景)
  • 36m :表示是青蓝色字体
  • 1;43m :表示黄色字体(1;33m 表示黄色字体)
  • \[\e[0m]\] :它在最后将颜色恢复成系统终端默认颜色

你可以在 Bash prompt HOWTO 这里找到更多的颜色代码,甚至可以让字符反相和闪烁!我不知道为什么地球人会有这种想法,但是你可以这么干!

所以你最喜欢的自定义提示符是什么样子的呢?有没有让你抓狂的自定义提示符呢?请在评论里告诉我吧~

(照片来源:ajmexico. 修改自 Jason Baker. CC BY-SA 2.0.)


作者简介:

Dave Neary - Dave Neary 是红帽开源和标准化团队成员,帮助开源项目对红帽的成功至关重要。自从在 1999 年为 GIMP 提交了第一个补丁以来,他一直带着各种不同的帽子,在开源的世界徜徉。


via: https://opensource.com/article/17/7/bash-prompt-tips-and-tricks

作者:Dave Neary 译者:吴霄/toyijiu 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

国产手机集体涨价,全怪AI...
文 | 锌刻度,作者 | 孟会缘,编辑 | 李觐麟 拿着4000...
2025-03-09 22:42:00
推动“AI与连接”的创新融...
3月初,全球瞩目的MWC 2025(世界移动通信大会)在西班牙巴塞...
2025-03-07 21:22:05
中国联通AI全时空连接终端...
在当今的科技领域,AI技术正以日新月异的态势蓬勃发展,其影响力不断...
2025-03-07 11:22:11
用AI为零售终端“添色增彩...
近日,攀枝花市米易县普威镇一家卷烟零售店内,像过年一样热闹非凡。走...
2025-03-06 18:22:23
对话杨元庆:AI的终局是服...
21世纪经济报道记者孔海丽 巴塞罗那报道 3月的巴塞罗那,聚集了全...
2025-03-06 09:22:07
AI for All 驱动...
北京时间3月3日,中兴通讯以“AI for All”为主题,携全...
2025-03-04 19:29:01

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...