分享

[ps1]Linux下PS1、PS2、PS3、PS4使用详解

 豆芽爱尚阅 2015-12-30

话题:ps1兴趣爱好

1、PS1——默认提示符
如下所示,可以通过修改Linux下的默认提示符,使其更加实用。在下面的例子中,默认的PS1的值是“\s-\v\$”,显示出了shell的名称的版本。我们通过修改,可以使其显示用户名、主机名和当前工作目录。
-bash-3.2$ export PS1="\u@\h \w> "
ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>
[注: 提示符修改为 "username@hostname current-dir>的形式]
本例中PS1使用的一些代码如下:
o \u -- 用户名
o \h -- 主机名
o \w -- 当前目录的完整路径。请注意当你在主目录下的时候,如上面所示只会显示~
注意,在PS1值之后有一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性。
将export PS1=”\u@\h \w>" 添加到.bash_profile 或者 .bashrc中,则可以保证其永久有效。
ramesh@dev-db ~> vi ~/.bash_profile
ramesh@dev-db ~> vi ~/.bashrc
[注: 将命令添加到以上任何一个即可]
2、PS2——再谈提示符
一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为"continue->" 。
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
> --key_buffer_size=512M --sort_buffer_size=512M \
> --read_buffer_size=4M --write_buffer_size=4M \
> /var/lib/mysql/bugs/*.MYI
[注: 这里使用 ">" 作为默认提示符]
ramesh@dev-db ~> export PS2="continue-> "
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
continue-> --key_buffer_size=512M --sort_buffer_size=512M \
continue-> --read_buffer_size=4M --write_buffer_size=4M \
continue-> /var/lib/mysql/bugs/*.MYI
[注: 与上面类似,用 "continue-> " 作提示符]
当用“\”使长命令分行显示,我发现非常易读。当然我也见过有的人不喜欢分行显示命令
3、PS3——Shell脚本中使用select时的提示符
你可以像下面示范的那样,用环境变量PS3定制shell脚本的select提示:
不使用PS3的脚本输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


ramesh@dev-db ~> 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

ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
#? 1
Monday
#? 4


[注: 缺省的提示符是 #?]
使用PS3的脚本输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


ramesh@dev-db ~> 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

ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
Select a day (1-4): 1
Monday
Select a day (1-4): 4


[注: 设置了PS3变量后,命令提示符已经成为 "Select a day (1-4):"]
4、PS4——PS4-“set -x"用来修改跟踪输出的前缀
如果你像下面那样在调试模式下的脚本中,PS4环境变量可以定制提示信息:
没有设置PS4时的shell脚本输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


ramesh@dev-db ~> cat ps4.sh


set –x
echo "PS4 demo script"
ls -l /etc/ | wc –l du -sh ~

ramesh@dev-db ~> ./ps4.sh
++ echo 'PS4 demo script'
PS4 demo script
++ ls -l /etc/
++ wc –l
243
++ du -sh /home/ramesh
48K /home/ramesh


[注: 当使用sex -x跟踪输出时的提示符为 ++]
设置PS4后的脚本输出:
PS4在ps.sh中定义了下面两个变量
o $0 显示当前的脚本名
o $LINENO 显示的当前的行号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


ramesh@dev-db ~> cat ps4.sh
export PS4='$0.$LINENO+ '
set -x
echo "PS4 demo script"
ls -l /etc/ | wc -l
du -sh ~

ramesh@dev-db ~> ./ps4.sh
../ps4.sh.3+ echo 'PS4 demo script'
PS4 demo script
../ps4.sh.4+ ls -l /etc/
../ps4.sh.4+ wc -l
243
../ps4.sh.5+ du -sh /home/ramesh
48K /home/ramesh


[注: 使用PS4后使 "{script-name}.{line-number}+" 成为set –x的命令提示符]

分享:鬼王土使 > [ps1]Linux下PS1、PS2、PS3、PS4使用详解

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多