【Linux工具|bash美化】bash终端提示符PS1美化
文章目录
- 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表示字体样式,其中数字可以使用多位数,如03
与3
效果相同
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美化相关推荐
- linux开终端失败,Linux:终端提示符 (prompt) 不如期生效原因
原标题:Linux:终端提示符 (prompt) 不如期生效原因 前言 先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触 shell的童 ...
- Linux编程 3 (初识bash shell与man查看手册)
一.初识bash shell 1.1 启动 shell GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...
- Linux系列6:bash学习
bash学习 1 认识 BASH 这个 Shell 1.1 硬件.核心与 Shell 1.2 为何要学文字接口的 shell 1.2.1 文字接口的 shell:大家都一样! 1.2.2 远程管理:文 ...
- linux命令帮助 man bash
BASH(1) BASH(1)NAMEbash - GNU Bourne-Again SHell (GNU 命令解释程序 "Bourne二世")概述(SYNOPSIS)bash [ ...
- LINUX 终端提示符个性设置
说明 经常接触Linux操作系统的朋友们在工作中经常会遇到一些五颜六色.花里胡哨的终端提示符,虽然个人不太喜欢太花哨,但是有些设置的确减轻工作强度,比如我个人喜欢在提示符中加上工作目录的绝对路径和时间 ...
- 【老鸟分享】Linux命令行终端提示符多种实用技巧!
1.Linux命令行提示符简介 众所周知,Linux命令行是系统管理员管理Linux的重要手段,我们管理Linux,首先要面对的就是Linux命令行提示符. Linux命令行结尾的提示符有" ...
- Linux命令终端提示符显示-bash-4.2#解决方法【转载】
昨天在配置linux,突然发现root登录的CRT的终端提示符显示的是-bash-4.2# 而不是root@主机名 + 路径的显示方式.搞了半天也不知道为什么出现这种情况.今天终于搞定这个问题, 原因 ...
- linux信号传递给进程,bash中的信号处理机制
Linux 中的信号 信号(Signal)是操作系统中常用的进程通信手段, 主要用来描述特定事件的发生, 进程接收到信号时有以下几种处理方式: 捕获并自定义处理函数: 给signal系统调用传递自定义 ...
- linux shell 鼠标事件,Bash Shellshock事件:CVE-2014-6271资料汇总
法国GNU/Linux爱好者Stéphane Chazelas于2014年9月中旬发现了著名SHELL实现BASH的一个漏洞,你可以通过构造环境变量的值来执行你想要执行的脚本代码,据报道称,这个漏洞能 ...
最新文章
- opengl正方形绕点旋转_一题十五种解法够不够? 旋转,构造,四点共圆乐不停...
- Centos 6.3 x86_64安装与配置bacula
- linux故障排除与修复(troubleshooting)
- mysqldump单个库导出_初相识 | 全方位认识 sys 系统库
- mysql where条件使用了or会不会扫全表
- 关于PF_INET和AF_INET的区别
- http://www.ibm.com/developerworks/cn/java/j-lo-hotswapcls/
- html图片等比例拉伸,CSS控制图片等比例缩放
- 短网址算法 php,php实现的短网址算法分享
- SQL Server无法连接客户端的问题
- STM32连接射频si4438模块
- 高中计算机教师学期论文,高中信息技术论文选题
- httpclient3与httpclient4不同版本使用方法
- 511 排序预演_最小数简单置前
- 最好的黄金技术指标250均线用法
- 信息系统项目管理师——历年论文题目2012年-2020年
- 网络流24题23. 火星探险问题
- 苹果手机在微信里自带计算机功能,苹果版微信又更新,这些功能全是我想要的!...
- Office 开发版本号与版本对应关系
- 解密新晋信息窃取木马Spymel
热门文章
- 域名投资长盛不衰的盈利策略
- HIT CSAPP LAB7
- 开心汽车将与海淘车合并:前者4年亏损2亿美元,股权变更或遇阻
- matlab内存不足的情况解决方案
- python命令ipad锁屏_python实现windows倒计时锁屏功能
- [python]队列操作(持续更新中)
- 英雄联盟《双城之战》视频弹幕爬取并分析输出词云
- 深入浅出 gRPC 01:gRPC 服务端创建和调用原理
- python shutil_python的shutil模块
- GT1030 GTX1050 GT705 Pascal Maxwell Fermi系列N卡Monterey 12.5 – Ventura 13.2 开启QE/CI驱动详尽教程