文章目录

  • 1. PS1示例
  • 2. 颜色设置
    • 2.1. 颜色设置格式
    • 2.2. 颜色格式说明
    • 2.3. 格式组合
  • 3. bash提示符中的变量
    • 3.1. 其他扩展
  • 4. 参考

1. PS1示例

先说一下bash版本

$ bash --version
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

bash中的PS1是主提示符变量,也是默认提示符变量。另外需要注意,PS1对bash起作用,对sh是无效的。可以通过echo $SHELL确认当前用户使用的shell是否为bash。除了PS1外,还有PS2、PS3、PS4几个环境变量用来提示一些其他信息。

下面看几个示例

export PS1='\e[1;32m\][\e[1m\]\e[3;35m\]\u\e[0;34m\]@\e[1;33m\]\H\e[1;32m\]][\e[1;34m\]\t\e[1;32m\]] \e[1m\]\e[3;30m\]\w\e[0m\]\n\$ '

上边示例的闪烁版本,用户名和主机会闪烁显示

export PS1='\e[1;32m\][\e[1m\]\e[5m\]\e[3;35m\]\u\e[0m\]\e[5;34m\]@\e[1;33m\]\H\e[0m\]\e[1;32m\]][\e[1;34m\]\t\e[1;32m\]] \e[1;30m\]\e[3;30m\]\w\e[0m\]\n\$ '

参考最好看的Bash美化——打造ParrotOS风格的Bash改的版本

export PS1='\e[0;31m\]\342\224\214\342\224\200\e[1;32m\][\e[1m\]\e[3;35m\]\u\e[0m\]@\e[1;33m\]\H\e[1;32m\]][\e[1;34m\]\t\e[1;32m\]] \e[1;30m\]\e[3;30m\]$PWD\e[0m\]\n\e[0;31m\]\342\224\224\342\224\200\342\224\200\342\225\274 \e[0m\]\$ '

2. 颜色设置

2.1. 颜色设置格式

\e[A;F;Bm文本
\e[A;F;Bm\]文本
\[\e[A;F;Bm\]文本

\e[A;F;Bm控制文本格式,\[\]分别表示不可见字符的起始和结束,所以三种格式效果是一样的。个人比较喜欢用\e[A;F;Bm\]

需要注意的是,格式设置后,会对后边所有文本起作用,包括我们在终端输入的命令。而且A/F/B是分别起作用的,只要不被重置,效果会一直延续,后边会详细解释。

如果想取消文本效果,可以在文本前添加如下格式。当然下边格式之后也可以加文本,只是文本显示为默认样式。

\e[0m
\e[0m\]
\[\e[0m\]

2.2. 颜色格式说明

这里说一下,格式中A/F/B的位置是任意的,bash是依靠值来对格式进行解析。也就是说\e[A;F;Bm\]\e[F;B;Am\]\e[F;B;Am\]等效果都是一样的。而且因为A/F/B的位置是任意的,为了书写简便,就可以省略A/F/B中的1个或2个参数。

下面对格式进行详细说明
\e表示Esc,也可以替换为\033

A表示字体样式,其中数字可以使用多位数,如033效果相同

0   OFF,默认样式
1   高亮加粗显示
2   变暗
3   斜体
4   显示下划线
5   闪烁显示
7   反色显示
8   颜色不可见
9   删除线

F表示字体颜色,B表示背景颜色

F   B   颜色
30  40  黑色
31  41  红色
32  42  绿色
33  43  黄色
34  44  蓝色
35  45  紫红色
36  46  青蓝色
37  47  白色

2.3. 格式组合

字体样式A只能控制一种格式,如果想要加粗斜体、红字黄底该怎么办呢?

\e[1;31;43m\]\e[3m\]文本
\e[3;31;43m\]\e[1m\]文本
\e[1;31m\]\e[3;43m\]文本

下面来详细分解下,关于\u\H等变量的说明见后边bash提示符中的变量

export PS1='\e[1;32m\][\e[1m\]\e[3;35m\]\u\e[0;34m\]@\e[1;33m\]\H\e[1;32m\]][\e[1;34m\]\t\e[1;32m\]] \e[1m\]\e[3;30m\]\w\e[0m\]\n\$ '
\e[1;32m\][             加粗绿色显示[
\e[1m\]\e[3;35m\]\u     加粗斜体紫红色显示用户名
\e[0;34m\]@             默认样式蓝色显示@
\e[1;33m\]\H            加粗黄色显示主机名
\e[1;32m\]][            加粗绿色显示][
\e[1;34m\]\t            加粗蓝色显示时间
\e[1;32m\]]             加粗绿色显示]和空格
\e[1m\]\e[3;30m\]\w     加粗斜体黑色显示工作路径
\e[0m\]\n\$             清除所有格式,换行显示提示符,注意提示符后有空格

前边提到A/F/B起作用,以上边用户名显示举例来说
如果把\e[3;35m\]\u中的紫色显示去掉,用户名会继续显示绿色。

\e[1;32m\][\e[1;32m\][\e[1m\]\e[3;35m\]\u
# 去掉紫色部分
\e[1;32m\][\e[1;32m\][\e[1m\]\e[3m\]\u

3. bash提示符中的变量

官方链接:Controlling the Prompt (Bash Reference Manual)

\a      ASCII响铃字符(07)
\d      日期,格式为"周 月 日"
\D{format}  参数format被传递给strftime(3)来构造自定格式的时间并入提示符中;该参数为空时根据本地化设置自动生成格式。
\e      ASCII转义字符(ESC)同\033
\h      简略主机名,在第一个点号前的内容
\H      完整主机名
\j      shell当前管理的任务数
\l      shell终端设备的基本名称
\n      换行
\r      回车,到当前行的起始位置
\s      shell的名称,$0的基本名称(最后一个斜杠后面的部分)
\t      当前时间(24小时) HH:MM:SS
\T      当前时间(12小时) HH:MM:SS
\@      当前时间(12小时) am/pm
\A      当前时间(24小时) HH:MM
\u      当前用户名称
\v      bash版本(如"2.00")
\V      bash版本+补丁号(如"2.00.0")
\w      当前工作目录,主目录会显示为~
\W      当前工作目录的基本名称,只会列出最后一个目录,主目录会显示为~
\!      该命令在历史文件中的位置
\#      该命令在当前shell中执行的序列位置
\$      提示符,root用户为#,普通用户为$
\nnn    八进制数ASCII,用于显示一些特殊字符
\\      反斜杠
\[      非打印字符起始,可以用来将终端控制序列嵌入到提示符中
\]      非打印字符起始结束

3.1. 其他扩展

除了bash提供的变量之外,还可以使用其他的环境变量,如PWD等,也可以使用一些命令表达式。

比如可以把\w换乘${PWD}$(pwd -P)

再比如添加$([[ $? != 0 ]] && echo -ne "\e[31mFAIL\e[0m" || echo -ne "\e[34mOK\e[0m"),显示上一条命令的执行结果

export PS1='\e[1;32m\][\e[1m\]\e[3;35m\]\u\e[0;34m\]@\e[1;33m\]\H\e[1;32m\]][\e[1;34m\]\t\e[1;32m\]][$([[ $? != 0 ]] && echo -ne "\e[31mFAIL\e[0m" || echo -ne "\e[34mOK\e[0m")\e[1;32m\]] \e[1m\]\e[3;30m\]\w\e[0m\]\n\$ '

4. 参考

最好看的Bash美化——打造ParrotOS风格的Bash

Controlling the Prompt (Bash Reference Manual)

【Linux工具|bash美化】bash终端提示符PS1美化相关推荐

  1. linux开终端失败,Linux:终端提示符 (prompt) 不如期生效原因

    原标题:Linux:终端提示符 (prompt) 不如期生效原因 前言 先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触 shell的童 ...

  2. Linux编程 3 (初识bash shell与man查看手册)

    一.初识bash shell 1.1 启动 shell   GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...

  3. Linux系列6:bash学习

    bash学习 1 认识 BASH 这个 Shell 1.1 硬件.核心与 Shell 1.2 为何要学文字接口的 shell 1.2.1 文字接口的 shell:大家都一样! 1.2.2 远程管理:文 ...

  4. linux命令帮助 man bash

    BASH(1) BASH(1)NAMEbash - GNU Bourne-Again SHell (GNU 命令解释程序 "Bourne二世")概述(SYNOPSIS)bash [ ...

  5. LINUX 终端提示符个性设置

    说明 经常接触Linux操作系统的朋友们在工作中经常会遇到一些五颜六色.花里胡哨的终端提示符,虽然个人不太喜欢太花哨,但是有些设置的确减轻工作强度,比如我个人喜欢在提示符中加上工作目录的绝对路径和时间 ...

  6. 【老鸟分享】Linux命令行终端提示符多种实用技巧!

    1.Linux命令行提示符简介 众所周知,Linux命令行是系统管理员管理Linux的重要手段,我们管理Linux,首先要面对的就是Linux命令行提示符. Linux命令行结尾的提示符有" ...

  7. Linux命令终端提示符显示-bash-4.2#解决方法【转载】

    昨天在配置linux,突然发现root登录的CRT的终端提示符显示的是-bash-4.2# 而不是root@主机名 + 路径的显示方式.搞了半天也不知道为什么出现这种情况.今天终于搞定这个问题, 原因 ...

  8. linux信号传递给进程,bash中的信号处理机制

    Linux 中的信号 信号(Signal)是操作系统中常用的进程通信手段, 主要用来描述特定事件的发生, 进程接收到信号时有以下几种处理方式: 捕获并自定义处理函数: 给signal系统调用传递自定义 ...

  9. linux shell 鼠标事件,Bash Shellshock事件:CVE-2014-6271资料汇总

    法国GNU/Linux爱好者Stéphane Chazelas于2014年9月中旬发现了著名SHELL实现BASH的一个漏洞,你可以通过构造环境变量的值来执行你想要执行的脚本代码,据报道称,这个漏洞能 ...

最新文章

  1. opengl正方形绕点旋转_一题十五种解法够不够? 旋转,构造,四点共圆乐不停...
  2. Centos 6.3 x86_64安装与配置bacula
  3. linux故障排除与修复(troubleshooting)
  4. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库
  5. mysql where条件使用了or会不会扫全表
  6. 关于PF_INET和AF_INET的区别
  7. http://www.ibm.com/developerworks/cn/java/j-lo-hotswapcls/
  8. html图片等比例拉伸,CSS控制图片等比例缩放
  9. 短网址算法 php,php实现的短网址算法分享
  10. SQL Server无法连接客户端的问题
  11. STM32连接射频si4438模块
  12. 高中计算机教师学期论文,高中信息技术论文选题
  13. httpclient3与httpclient4不同版本使用方法
  14. 511 排序预演_最小数简单置前
  15. 最好的黄金技术指标250均线用法
  16. 信息系统项目管理师——历年论文题目2012年-2020年
  17. 网络流24题23. 火星探险问题
  18. 苹果手机在微信里自带计算机功能,苹果版微信又更新,这些功能全是我想要的!...
  19. Office 开发版本号与版本对应关系
  20. 解密新晋信息窃取木马Spymel

热门文章

  1. 域名投资长盛不衰的盈利策略
  2. HIT CSAPP LAB7
  3. 开心汽车将与海淘车合并:前者4年亏损2亿美元,股权变更或遇阻
  4. matlab内存不足的情况解决方案
  5. python命令ipad锁屏_python实现windows倒计时锁屏功能
  6. [python]队列操作(持续更新中)
  7. 英雄联盟《双城之战》视频弹幕爬取并分析输出词云
  8. 深入浅出 gRPC 01:gRPC 服务端创建和调用原理
  9. python shutil_python的shutil模块
  10. GT1030 GTX1050 GT705 Pascal Maxwell Fermi系列N卡Monterey 12.5 – Ventura 13.2 开启QE/CI驱动详尽教程