最近租了个服务器,但是自带的命令提示符太ugly了,决定自己捯饬捯饬。
shell命令提示符是存储在$PS1这个环境变量中,因此我们只要对$PS1进行修改,就可以修改命令提示符了。
需要先知道$PS1的常用参数:
-
\u: 用户 -
\h: 主机名(短格式 -
\H: 主机名(完整格式 -
\w: 当前工作目录的完整路 -
\W: 当前工作目录的基本名称(仅目录名 -
\d: 当前日期,格式为Weekday Month Dat -
\t: 当前时间,格式为HH:MM:S -
\T: 当前时间,格式为HH:MM:SS(12小时制 -
\@: 当前时间,格式为HH:MM AM/PM(12小时制 -
\A: 当前时间,格式为HH:MM(24小时制 -
\n: 换行 -
\[和\]: 用于包裹转义序列(如颜色设置),以确保 Bash 正确计算提示符的长度。 -
$?: 上一个命令的退出状 -
$: 当前用户的 shell 提示符(通常是$或#) -
\$: 如果是普通用户,则显示$;如果是超级用户(root),则显示#
知道了这些参数,就可以按需选择和排列自己命令提示符的内容了!
比如,下面这个语句修改出来的命令提示符就变为:username@host:~$
PS1='\u@\h:\w\$ '
加点时间和日期:[Wed Sep 04 10:51:36]username@host:~$
PS1='[\d \t] \u@\h:\w\$ '
多行提示符,
PS1='\u@\h:\w\n\$ '
这些参数和示例可以帮助你自定义 Bash 提示符,以更好地适应你的需求和偏好。
好的,内容多了点,但是还是很单调,那就加点颜色吧。shell终端字符是用转义序列来控制颜色的。
转义序列的写法
1.\e或\E或\033或\33开头(escape的ASCII码是⼗进制的27,⼋进制的33)
2.[显示⽅式;前景⾊;背景⾊m]
3.\e或\E或\033或\33[0m结尾,或\[\e[0m\],恢复默认显示
规则2中的显示方式、前景色、背景色在shell中有对应的数字来表示:

如果同⼀个字符需要设置多个效果,则⽤分号分隔
比如,
表示 绿底(42)粗体(1)红字(31)
为了让大家对这些数字有一个直观的认识,写了一个简单的循环,看看效果
for i in `seq 0 7` `seq 30 37` `seq 40 47` `seq 90 97` ; do echo -ne "\e[${i}m $i \e[0m"; done

nice,有了内容和颜色,就可以自己开搞了
爱是一道光:

PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '
花里胡哨:
PS1='\[\e[1;32m\][\[\e[0;35m\]\u\[\e[0;37m\]@\h \W \[\e[0;34m\]\d \t\[\e[0;32m\]]\[\e[0m\]\\$'

最后,需要提醒的是,由于我们以上只是在暂时修改了PS1变量,只在当前终端生效,也就是说,下次重新启动或者换一个终端,这些效果会消失。为了永久生效,需要添加到配置文件中(如~/.bashrc),或者export PS1=“·········”>>~/.bashrc中(可以source一下立即生效)。
欧克,结束!大家可以自由发挥,欢迎贴到评论区互相学(嘲)习(笑)。
