如何修改Bash Shell的提示符的格式和配色
导读 | 我们大多数使用的shell提示符,显示用户名、主机名和当前所在目录。在本文将会介绍如何定制一个自己喜欢的Bash。 |
了解BASH
shell的提示符是通过一个特殊的shell变量PS1
来控制的。还有其他变量,比如PS2、PS3和PS4。Bash在准备读取命令时显示第一个提示符变量PS1
。
当它需要更多的输入来完成一个命令时,它会显示第二个提示符变量PS2
。
bash允许通过插入一些“反斜杠”\
转义的特殊字符来定制这些提示字符串。
显示当前Bash提示符
[[email protected] ~]# echo $PS1 [\[email protected]\h \W]\$
每个被转义的特殊字符解释如下:
-
\u
: 显示当前用户 -
\h
: 显示主机名 -
\W
: 打印当前所在目录 -
\$
: 如果有效UID为0,则显示#(指的是root用户),否则显示$(指的是普通用户)
修改Bash提示符
如果想要使修改的shell提示否永久生效,可以把变量写在家目录下面的.bashrc
文件里面。若要想全局生效,所有用户都生效,可以写在/etc/bash.bashrc
或者/etc/bashrc
配置文件里面。
例如:在提示符中显示用户名、主机名、目录所在的绝对路径、显示24小时制当前时间,将命令保存到~/.bashrc
文件中。:
[[email protected] ~]# echo 'export PS1="[\\[email protected]\\h \\W \\A]\\$ "' >> ~/.bashrc [[email protected] ~]# source ~/.bashrc [[email protected] ~ 11:28]#
以下是常用特殊字符:
-
\u
: 显示当前用户 -
\w
: 打印当前所在目录的绝对路径 -
\W
: 打印当前所在目录 -
\h
: 显示主机名 -
\H
: 显示完全合格域名 -
\A
: 显示当前时间24小时制 -
\@
: 显示当前时间12小时制 -
\$
: 如果有效UID为0,则显示#(指的是root用户),否则显示$(指的是普通用户) -
\j
: 当前由shell管理的作业数量
为Bash提示符添加配色
一下是常用的配色,有修改字体颜色、修改为粗体、添加下划线、设置背景颜色等设置:
'\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[1;30m' # 黑色 粗体 '\e[1;31m' # 红色 粗体 '\e[1;32m' # 绿色 粗体 '\e[1;33m' # 黄色 粗体 '\e[1;34m' # 蓝色 粗体 '\e[1;35m' # 紫色 粗体 '\e[1;36m' # 青色 粗体 '\e[1;37m' # 白色 粗体 '\e[4;30m' # 黑色 下划线 '\e[4;31m' # 红色 下划线 '\e[4;32m' # 绿色 下划线 '\e[4;33m' # 黄色 下划线 '\e[4;34m' # 蓝色 下划线 '\e[4;35m' # 紫色 下划线 '\e[4;36m' # 青色 下划线 '\e[4;37m' # 白色 下划线 '\e[40m' # 黑色 背景 '\e[41m' # 红色 背景 '\e[42m' # 绿色 背景 '\e[43m' # 黄色 背景 '\e[44m' # 蓝色 背景 '\e[45m' # 紫色 背景 '\e[46m' # 青色 背景 '\e[47m' # 白色 背景 ‘\e[0m' # 重置为默认值
下面是配色方案,可以把自己喜欢的添加到~/.bashrc
文件里面,然后让他生效:
[[email protected] ~ 15:49]# export PS1="\e[0;30m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;31m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;32m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;33m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;34m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;35m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;36m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0;37m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# [[email protected] ~]# export PS1="\e[1;30m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;31m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;32m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;33m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;34m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;35m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;36m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[1;37m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# [[email protected] ~]# export PS1="\e[4;30m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;31m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;32m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;33m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;34m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;35m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected]lhost ~]# export PS1="\e[4;36m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[4;37m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# [[email protected] ~]# export PS1="\e[40m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[41m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[42m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[43m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[44m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[45m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[46m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[47m[\\[email protected]\\h \\W]\\$ \e[m " [[email protected] ~]# export PS1="\e[0m[\\[email protected]\\h \\W]\\$ \e[m "
如果想要使提示符的每个部分显示的颜色不同,下面一个例子可以了解一下:
[[email protected] log#] export PS1="\e[35m[\\u\e[[email protected]\e[36m\\h \e[33m\\W]\e[1,33m\\$\e[m "
命令解释:
-
"[\e[35m[\\u
: 开头添加中括号"[",当前登录的用户部分使用紫色字体 -
\e[[email protected]
: "@"符号不给配色,使用默认颜色 -
\e[36m\\h
: 主机名称部分使用青色 -
\e[33m\\W]
: 当前所在目录使用黄颜色,在其后面添加中括号"]" -
\e[1,33m\\$\e[m "
: $符号加粗,使用黄颜色
总结
在本文介绍了如何定制一个自己喜欢的Bash Shell提示符,希望可以帮助大家。