文章目录
- 1. PS1示例
- 2. 颜色设置
- 2.1. 颜色设置格式
- 2.2. 颜色格式说明
- 2.3. 格式组合
- 3. bash提示符中的变量
-
- 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几个环境变量用来提示一些其他信息。
临时使用可以直接在bash命令行通过export PS='xxxx'
来指定,如果要永久生效,可以把在bash输入的内容保存到~/.bashrc
或.bash_aliases
中,使用source ~/.bashrc
可以立即生效,重新登陆或重启也会自动执行source ~/.bashrc
。
下面看几个示例
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\$ '
![在这里插入图片描述](https://img-blog.csdnimg.cn/1d01a7e7bc4c43568913a4a46e5b8f33.png)
上边示例的闪烁版本,用户名和主机会闪烁显示
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\$ '
![在这里插入图片描述](https://img-blog.csdnimg.cn/324991c557de4664b98533b8f9bba66b.png)
参考最好看的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\]\$ '
![在这里插入图片描述](https://img-blog.csdnimg.cn/f7ab014c350a490f9b35b42a7e575f7f.png)
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
![在这里插入图片描述](https://img-blog.csdnimg.cn/65d6cba49262491b9f2f6b6511262543.png)
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\$ '
![在这里插入图片描述](https://img-blog.csdnimg.cn/37593b8179ba4fc3a91c11a74ca24e5b.png)
4. 参考
最好看的Bash美化——打造ParrotOS风格的Bash
Controlling the Prompt (Bash Reference Manual)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)