在Linux
系统中,PS1
、PS2
、PS3
和PS4
是特定的环境变量,它们各自在控制提示符和菜单提示信息方面发挥着不同的作用。
这些PS
变量在Linux
系统中可以为用户提供灵活的方式来定制和控制命令行的外观和行为,继而提高用户与系统的交互体验。
注:
如果要长期永久性修改提示符,可以将修改提示符的命令添加到
$HOME/.bashrc
或$HOME/.bash_profile
文件中。
1、PS1变量
它主要用于设置shell
命令提示符。每当你在终端中输入命令时,所显示的字符串就是由PS1
变量控制的。
可以根据自己的喜好和需要,自定义PS1
变量的值,从而改变命令提示符的外观和格式。
其默认值为:[u@h W]$,其表示:显示用户主机名称工作目录,可以在终端窗口输入echo $PS1命令查看:
[root@iSCSI-server ~]# echo $PS1
[u@h W]$
[root@iSCSI-server ~]#
上面详细解释如下
字符 | 代表含义 | 备注 |
---|---|---|
[ | 代表[ | |
u | 代表当前用户 | root |
@ | 代表@ |
|
h | 代表主机名 | iSCSI-server |
代表空格(不显示) | ||
W | 代表当前所在的目录名 | ~ 代表当前用户家目录 |
] | 代表] | |
$ | 代表特权用户或者普通用户,普通用户$+空格,超级用户#+空格 |
PS1
变量可用的参数
参数 | 描述 |
---|---|
d | 代表日期,格式为weekday month date |
H | 完整的主机名称。 |
h | 仅取主机的第一个名字 |
t | 显示时间为24小时格式,如:HH:MM:SS |
T | 显示时间为12小时格式 |
A | 显示时间为24小时格式:HH:MM |
u | 当前用户的账号名称 |
v | BASH的版本信息 |
w | 完整的工作目录名称。家目录会以 ~代替 |
W | 利用basename取得工作目录名称,所以只会列出最后一个目录 |
# | 下达的第几个命令 |
$ | 提示字符,如果是root时,提示符为:# ,普通用户则为:$ |
[ | 字符”[“ |
] | 字符”]” |
! | 命令行动态统计历史命令次数 |
PS1变量使用举例
1、简洁的提示符
[root@iSCSI-server ~]# PS1='u@h:w$ '
root@iSCSI-server:~$
这个提示符会显示用户名(u
)、主机名(h
)、当前工作目录(w
)和一个美元符号($
)。
它适用于那些喜欢简单、直接的提示符的用户。
2、显示完整路径
[root@iSCSI-server ~]# PS1='[u@h w]# '
[root@iSCSI-server ~]# cd /var/log
[root@iSCSI-server /var/log]# pwd
/var/log
[root@iSCSI-server /var/log]#
显示当前工作目录的完整路径(w
),这对于在深层目录中工作时快速识别当前位置非常有用。
3、显示时间和日期
[root@iSCSI-server ~]# PS1='[d]u@h w$ '
[三 3月 20]root@iSCSI-server ~$
[root@iSCSI-server ~]# PS1='[t] [u@h w]# '
[09:27:06] [root@iSCSI-server ~]#
[09:27:11] [root@iSCSI-server ~]#
或者:
[root@iSCSI-server ~]# PS1='(`date +"%H:%M:%S"`)[u@h W]$ '
(09:43:59)[root@iSCSI-server ~]#
(09:44:01)[root@iSCSI-server ~]#
4、彩色提示符
[root@iSCSI-server ~]# PS1="[e[33;1m]u[e[31;1m]@[e[33;1m]h [e[36;1m]w[e[34;1m]$ [e[0m]"
root@iSCSI-server ~$
root@iSCSI-server ~$
颜色代码格式:**[e[F;Bm]
**
其中:F表示字体颜色,B表示背景颜色,具体如下:
字体代码 | 背景代码 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
2、PS2变量
这是第二次提示符,用于交互式的shell
中一条命令多行连接时的显示信息。
当你的命令行输入长度超过一行时,系统会使用PS2
提示符来继续输入。
这使得用户可以轻松地在多行中输入长命令,提高命令行操作的效率。
- 一个非常长的命令可以通过在末尾加
使其分行显示
PS2
多行命令的默认提示符,默认值是>
#修改提示符由>
变为>+
[root@iSCSI-server ~]# echo
>+ 1
1
3、PS3变量
这个环境变量用于控制select
命令创建的菜单提示信息。
在Linux
中,select
命令允许用户从一系列选项中选择一个,而PS3
变量则负责定义在选择过程中显示的提示符。
通过定制PS3
,可以让select
命令的菜单提示更符合你的需求。
不使用PS3变量
[root@iSCSI-server ~]# cat myps3.sh
#!/bin/bash
echo "以下是一些选项,请选择您想要的选项:"
select option in "选项1" "选项2" "退出"; do
case $option in
"选项1")
echo "您选择了选项1"
break
;;
"选项2")
echo "您选择了选项2"
break
;;
"退出")
echo "退出脚本"
exit 0
;;
*)
echo "无效的选择,请重新选择"
;;
esac
done
运行sh脚本:
[root@iSCSI-server ~]# bash myps3.sh
以下是一些选项,请选择您想要的选项:
1) 选项1
2) 选项2
3) 退出
#? 1
您选择了选项1
[root@iSCSI-server ~]#
使用PS3变量
在上面脚本中先定义PS3
变量:
#!/bin/bash
# 设置PS3变量以自定义select命令的提示
# PS3="请选择一个选项: "
echo "以下是一些选项,请选择您想要的选项:"
select option in "选项1" "选项2" "退出"; do
case $option in
"选项1")
echo "您选择了选项1"
break
;;
"选项2")
echo "您选择了选项2"
break
;;
"退出")
echo "退出脚本"
exit 0
;;
*)
echo "无效的选择,请重新选择"
;;
esac
done
然后运行脚本:
[root@iSCSI-server ~]# bash myps3.sh
以下是一些选项,请选择您想要的选项:
1) 选项1
2) 选项2
3) 退出
请选择一个选项: 1
您选择了选项1
[root@iSCSI-server ~]#
4、PS4变量
set -x
用来修改跟踪输出的前缀,这个变量很少用。