[Linux]命令提示符PS1设置彩色颜色、自定义显示格式、常见不生效问题解决

2021-04-04 31点热度 0人点赞 0条评论

前言

用过Ubuntu,root ssh到shell看到它的提示符是彩色的,看上去比较舒服,如图:

但是使用其他非root用户登录,或者CentOS等默认就不是彩色的,我们也希望他们能有彩色的提示符和自定义的提示(如图是[email protected]:~#)

实现

要修改linux终端命令行颜色,我们需要用到PS1PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的设置。

在终端输入命令 echo $PS1,即可在输出中找到关于PS1的定义如下:

echo $PS1
# 在普通的CentOS等机器上,默认输出
[\[email protected]\h \W]\$

# 在有颜色的机器上,输出
\[\e]0;\[email protected]\h: \w\a\]\[\033[38;5;193m\]\[email protected]\h\[\]\[\033[38;5;15m\]:\[\]\[\033[38;5;45m\]\W\[\]\[\033[38;5;15m\]\$ \[\]

文字设置

PS1的定义中个常用的参数的含义如下:

符号 作用
\d 代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H 完整的主机名称
\h 仅取主机的第一个名字
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v BASH的版本信息
\w 完整的工作目录名称
\W 利用basename取得工作目录名称,所以只会列出最后一个目录
# 下达的第几个命令
\$ 提示字符,如果是root时,提示符为:#<br>普通用户则为:$

通过上面的参数我们知道Linux中命令提示信息的默认格式是:

[ 当前终端用户名 @ 主机名前一个名字 工作目录的最后一项 ] 用户提示字符

颜色设置

在PS1中设置字符颜色的格式为:[\e[F;Bm],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47。颜色表如下:

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

设置特殊显示

0 OFF,关闭颜色
1 高亮显示
4 显示下划线
5 闪烁显示
7 反白显示
8 颜色不可见

特殊显示可在结束颜色输入里面设置:[\e[ 特殊颜色编号 m]

根据颜色表,就可以修改PS1,对命令行的前缀做颜色设置了,

如下我整理了我常用的比较好看的配色和文字设置:

#centos:
export PS1="\[\033[38;5;193m\][\[email protected]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;159m\]\W\[$(tput sgr0)\]\[\033[38;5;193m\]]\[$(tput sgr0)\]\[\033[38;5;15m\]\\$\[$(tput sgr0)\] "

#ubuntu original
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

#ubuntu my
export PS1="\[\033[38;5;193m\]\[email protected]\h\[$(tput sgr0)\]\[\033[38;5;15m\]:\[$(tput sgr0)\]\[\033[38;5;45m\]\W\[$(tput sgr0)\]\[\033[38;5;15m\]\\$ \[$(tput sgr0)\] "

#写到~/.bashrc里去

#ubuntu里,默认有的,如果没有,bashrc里,找到force_color_prompt=yes 取消注释

保存到配置文件,让设置一直生效

我们可以把

export PS1="\[\033[38;5;193m\][\[email protected]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;159m\]\W\[$(tput sgr0)\]\[\033[38;5;193m\]]\[$(tput sgr0)\]\[\033[38;5;15m\]\\$\[$(tput sgr0)\] "

的变量写入到~/.bashrc的最后,这样就可以一直生效了

如果你的用户不是root用户,那么.bashrc的文件位置应该是在 /home/user/.bashrc,其中user是你的用户名,如果连.bashrc也没有,那么就新建一个.bashrc文件吧。

vim ~/.bashrc
#把export PS1那句写到.bashrc最后 然后运行source生效
source ~/.bashrc

如果使用source ~/.bashrc 还没有生效,那么再检查下.bashrc里是否有

force_color_prompt=yes

如果没有,也把这句写到.bashrc里去

~/.bashrc的示例内容如下:

更方便的无脑自定义方法

如果你还是想自定义你的命令提示符,但是不想研究各个自定义参数的含义,还有一个更简便的方式

http://bashrcgenerator.com/

这个网站能像搭积木的方式,自定义各种显示和颜色设置,超级方便

admin

这个人很懒,什么都没留下

文章评论

*

code