通过设置环境变量PS1、PS2、PS3以及PS4来自定义用户命令行的字符显示。如果要长期永久性修改提示符,可以将修改提示符的命令添加到HOME/.profile或HOME/.bash_profile文件中
PS1是主提示符变量,也是默认提示符变量。默认值[\u@\h \W]\$
,显示用户主机名称工作目录。
基本上通过设置PS1来定义命令行提示字符即可,最常用的需求就是显示登录的用户名、主目录、主机名等等。
默认的是:
[root@centos7 ~]# echo $PS1
[\u@\h \W]\$
效果:
参考1:
[root@centos7 ~]#PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]"
效果:
参考2:
1. 如何加颜色:加颜色链接
2. 在PS1值之后加一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性
3. 把定义好的变量写成脚本建议放到/etc/profile.d/
下
举例:
[root@centos7 ~]#vim /etc/profile.d/env.sh
PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"
PS1变量可以使用的参数值有如下:
参数 | 描述 |
---|---|
/d | 代表日期,格式为weekday month date,例如:”Mon Aug 1” |
/H | 完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux |
/h | 仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 |
/t | 显示时间为24小时格式,如:HH:MM:SS |
/T | 显示时间为12小时格式 |
/A | 显示时间为24小时格式:HH:MM |
/u | 当前用户的账号名称 |
/v | BASH的版本信息 |
/w | 完整的工作目录名称。家目录会以 ~代替 |
/W | 利用basename取得工作目录名称,所以只会列出最后一个目录 |
/# | 下达的第几个命令 |
/$ | 提示字符,如果是root时,提示符为:# ,普通用户则为:$ |
/[ | 字符”[“ |
/] | 字符”]” |
/! | 命令行动态统计历史命令次数 |
一个非常长的命令可以通过在末尾加
\
使其分行显示 PS2多行命令的默认提示符,默认值是>
PS2一般使用于命令行里较长命令的换行提示信息,比如:
[root@centos7 ~]#echo \
> #默认的
[root@centos7 ~]# export PS2=">+ " # 修改
[root@centos7 ~]#echo \
>+ #修改后
当用
\
使长命令分行显示,非常易读。当然我也有的人不喜欢分行显示命令
Shell脚本中使用select时的提示符
你可以像下面示范的那样,用环境变量PS3定制shell脚本的select提示: 不使用PS3的脚本输出:
[root@centos6 ~]#cat ps3.sh
select i in mon tue wed exit
do
case $i in
mon) echo "Monday";;
tue) echo "Tuesday";;
wed) echo "Wednesday";;
exit) exit;;
esac
done
[root@centos6 ~]#bash ps3.sh
1) mon
2) tue
3) wed
4) exit
#? 1 [注: 提示符是 #?]
Monday
#? 2
Tuesday
#? 4
修改PS3后效果
[root@centos6 ~]#cat ps3.sh
PS3="Select a day (1-4): "
select i in mon tue wed exit
do
case $i in
mon) echo "Monday";;
tue) echo "Tuesday";;
wed) echo "Wednesday";;
exit) exit;;
esac
done
[root@centos6 ~]#bash ps3.sh
1) mon
2) tue
3) wed
4) exit
Select a day (1-4): 1 [注: 提示符是 Select a day (1-4):]
Monday
Select a day (1-4): 2
Tuesday
Select a day (1-4): 4
PS4-set -x
用来修改跟踪输出的前缀(很少很少用到 随意就不解释了)
如果有兴趣,可以学习bash里面的简介。 可以百度 linux超級技巧,第33章講述了ps3,ps4