PS即是Prompt String,命令提示符的意思。在bash中一共有四个地方出现。分为表示为PS1,PS2,PS3,PS4。
PS1
PS1是用来控制默认提示符显示格式。下面方括号中的内容便是PS1。
[root@Ethan ~]# echo $PS1
[\u@\h \W]\$
PS1的常用参数以及含义:
\d :代表日期,格式为weekday month date,例如:”Mon Aug 1″
\H :完整的主机名称
\h :仅取主机名中的第一个名字
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\@:显示时间,为12小时格式:am/pm
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称
\W :利用basename取得工作目录名称,只显示最后一个目录名
\# :下达的第几个命令
\$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $
<46>[root@Ethan Ethan]#echo $PS1
[\u@\h \W]\$
修改linux终端命令提示符字体颜色
在PS1中设置字符颜色的格式为:\[\e[F;Bm\]……..\[\e[0m\]
其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,\[\e[0m\]作为颜色设定的结束。
编辑“~/.bash_profile”文件。
[root@Ethan ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
export PS1
PS2
一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为”continue->” 。
<7>[root@Ethan ~]#PS2='continue->'
<8>[root@Ethan ~]#ls \
continue->/etc \
continue->/boot
PS3
Shell脚本中使用select时的提示符
现在有下面这样一个脚本:
#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
默认运行如下:
<35>[root@Ethan Ethan]#sh p3.sh
1) mon
2) tue
3) wed
4) exit
#? 1
Monday
#? 2
Tuesday
#? 5
#?
修改PS3=’ Select a day (1-4): ‘后,我们在脚本中添加,如下:
<39>[root@Ethan Ethan]#sh p3.sh
1) mon
2) tue
3) wed
4) exit
Select a day (1-4):1
Monday
Select a day (1-4):2
Tuesday
Select a day (1-4):3
Wednesday
PS4
“set -x”用来修改跟踪输出的前缀 。
有下面这样一个脚本文件:
set -x
#PS4='$0.$LINENO+ '
echo "hello world"
ls /Ethan
试着来运行一下,可以看到命令前的“+”,PS4就是用来定义这个提示符的。
[root@Ethan Ethan]# sh p4.sh
+ echo 'hello world'
hello world
+ ls /Ethan
p3.sh p4.sh
[root@Ethan Ethan]# sh p4.sh
+ PS4='$0.$LINENO+ '
p4.sh.3+ echo 'hello world'
hello world
p4.sh.4+ ls /Ethan
p3.sh p4.sh
参考资料