@TOC
一、彩色命令提示符prompt
登录Linux后,默认的系统提示符毫无个性,无法明显辨别生产和测试环境,而导致误操作。可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误。
1.1.默认的提示符
#Rocky默认的提示符
[dange@rocky8-1 ~]#
#ubuntu默认的提示符
dange@ubuntu2204:~#
- # 管理员
- $ 普通用户
#查看当前命令提示符
[dange@rocky8-1 ~]$ echo $PS1
[\u@\h \W]\$
PS1变量代表的内容就是用户名+@+主机名+路径名(长路径)+ $
# 如果以root用户登录主机,则默认提示符为,对应的就是上面的[\u@\h \W]\$
[dange@rocky8-1 ~]#
# PS1中的值要使用单引号引用,如果是双引号,则某些替换符不会被解析
PS1='\[\e[31m\][\u@\h \W]\$\[\e[0m\]'
# 如果是永久保存,则要写入文件
echo "PS1='\[\e[31m\][\u@\h \W]\$\[\e[0m\]'" > /etc/profile.d/env.sh
source /etc/profile.d/env.sh
1.2.PS1变量中的常用选项
PS1变量中的常用选项 | 说明 |
---|---|
# | PS1变量中的常用选项 |
\d | 日期,格式为"星期 月 日" |
\H | 完整的主机名。如默认主机名"localhost.localdomain" |
\h | 简写的主机名。如默认主机名"localhost" |
\t | 24小时制问题,格式为"HH:MM:SS" |
\T | 12小时制时间,格式为"HH:MM:SS"。 |
\A | 24小时制时间,格式为"HH:MM"。 |
\@ | 12小时制时间,格式为"HH:MM am/pm"。 |
\u | 当前用户名。 |
\v | Bash版本信息。 |
\w | 当前所在目录的完整名称。 |
\W | 当前所在目录的最后一个目录。 |
\# | 执行的第几条命令。 |
$ | 提示符。如果是 root 用户,则会显示提示符为"#";如果是普通用户,则会显示提示符为"$" |
1.3.PS1中颜色部分
1.3.1.开始结束位
#PS1中颜色部分
\033[ #开始为
\033[0m #结束位
# 上面的\033 可以换成 \e
# 颜色设置 \e[ 颜色m 内容 \e[0m 颜色后面要用m结束,多个颜色,用;分隔,只要一个m
\e[31m我是红色\e[0m
1.3.2.各颜色表示方式
字体颜色 | 背景色 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
字体颜色 | 背景颜色 |
---|---|
\e[30m我是黑色\e[0m | \e[40m我是黑色\e[0m |
\e[31m我是红色\e[0m | \e[41m我是红色\e[0m |
\e[32m我是绿色\e[0m | \e[42m我是绿色\e[0m |
\e[33m我是黄色\e[0m | \e[43m我是黄色\e[0m |
\e[34m我是蓝色\e[0m | \e[44m我是蓝色\e[0m |
\e[35m我是紫红色\e[0m | \e[45m我是紫红色\e[0m |
\e[36m我是青蓝色\e[0m | \e[46m我是青蓝色\e[0m |
\e[37m我是白色\e[0m | \e[47m我是白色\e[0m |
# 字体颜色+背景颜色组合,字体颜色和背景颜色不分先后,因为值不一样
\e[30;40m红底黑字\e[0m
\e[41;30m红底黑字\e[0m
1.3.3.特殊效果
特殊效果 | 含义 |
---|---|
0 | 关闭效果 |
1 | 高亮效果 |
3 | 斜体 |
4 | 下划线 |
5 | 闪烁,闪烁效果与远程工具所在的环境有关 |
7 | 反白显示 |
8 | 隐藏 |
9 | 删除线 |
可组合使用,但如果效果有冲突时,以最后的为准,就是说,后面的效果,会覆盖前面的效果
\e[30;41;5m红底黑色字闪烁\e[0m
\e[4;30;41;5m红底黑色字下划线闪烁\e[0m
\e[0;4;30;41;5m红底黑字下划线闪烁\e[0m #这里的0;4;5 都表示效果,但后面的4;5覆盖了前面的0
\e[4;30;41;5;0m红底黑字下划线闪烁\e[0m #这样写,4;5的效果都被0去掉了
1.4.范例:在CentOS系统实现持久保存提示符格式
PS1='[\u@\h \W]\$'
PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\$\[\e[0m\] '
PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]'
1.5.范例:ubuntu2204中PS1
dange@ubuntu2204:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
# ${debian_chroot:+($debian_chroot)} 表示给变量赋值,如果存在
/etc/debian_chroot 文件,则该文件中内容会被赋值给变量$debian_chroot
#文件不存在
root@ubuntu2204:~# ls /etc/debian_chroot
ls: cannot access '/etc/debian_chroot': No such file or directory
#变量为空
root@ubuntu2204:~# echo $debian_chroot
在 ubuntu2204 中,设置 PS1,如果要对所有普能用户生效,将 PS1 定义写在 /usr/share/bash-completion/bash_completion 的最下面,如里需要对每个用户单独定义,写在用户家目录的 .bashrc 文件的最下面。
范例:实现Ubuntu系统持久保存提示符格式
PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\] '
PS1='\[\e[1;31m\][\u@\h:\w]\$\[\e[0m\] '
1.6.PS1中颜色设置过程分解【详解】
[\u@\h \W]\$
用户名+@+主机名+路径名(长路径)+ 提示符符号($)
颜色如何设置:
一个单独的颜色设置: \e[代码;前景;背景m, 如:\[\e[1;32;40m\]表示高亮显示字体为绿色,背景色为黑色。
注意:颜色的设置,放在相应的要设置的前面
如用户名颜色设置: \[\e[01;35;40m\]\u
结束颜色设置: \[\e[0m\]
PS1='[\u@\h \W]\$ '
PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '
PS1='\e[31;1m[\u@\h \W]\$ \e[0m '
PS1='\e[1;35m[\u@\h \W]\$ \e[0m '
PS1='\[\e[1;35m\][\u@\h \W]\$ \[\e[0m\] '
如用户名颜色设置: \[\e[01;35;40m\]\u
结束颜色设置: \[\e[0m\]
PS1='[\u@\h \W]\$ '
PS1='[\u@\h \W]\$ '
PS1='\[\e[1;32m\][\u@\h \W]\[\e[0m\]\$ '
PS1='\[\e[1;32m\][\[\e[1;33m\]\u@\h \W]\[\e[0m\]\$ '
PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h \W]\[\e[0m\]\$ '
PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h\[\e[1;31m\] \W]\[\e[0m\]\$ '
PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '
1.7.我使用的色彩
1.7.1.Rocky8
PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '
PS1='\[[\[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '
PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]'
# 如果是永久保存,则要写入文件
echo "PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '" > /etc/profile.d/env.sh
echo "PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]'" > /etc/profile.d/env.sh
source /etc/profile.d/env.sh
1.7.2.ubuntu2004
[13:49:10 dange@ubuntu2004 ~]$ echo $PS1
\[\e[1;32m\][\t \[\e[1;35m\]\u@\h \W]\$\[\e[0m\]
[13:49:15 dange@ubuntu2004 ~]$
[13:49:21 dange@ubuntu2004 ~]$ su - root
Password:
[13:49:27 root@ubuntu2004:~]# echo $PS1
\[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\]
PS1='\[\e[1;31m\][\u@\h:\W]\$\[\e[0m\] '
PS1='\[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\] '
PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u@\[\e[1;31m\]\h:\W\[\e[1;32m\]]\$\[\e[0m\] '
echo "PS1='\[\e[1;31m\][\u@\h:\W]\$\[\e[0m\] '" >> .bashrc
echo "PS1='\[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\] '" >> .bashrc
source .bashrc
1.8.关于为centos7中命令提示符设置颜色之后,无法正常换行的问题
单引号和双引号问题
评论