Linux下PS1、PS2、PS3、PS4使用详解

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提示(脚本名称为select1.sh):

#! /bin/bash
select i in mon tue wed 
do
	case $i in
		mon)
			echo 'Monday';break;;
		tue)
			echo 'Tuesday';break;;
		wed)
			echo 'Wednesday';break;;
		*)
			echo 'not exist!';;
	esac
done

select1.sh采用PS3默认值,可以看到默认的提示符是#?,执行结果如下:
bash select1.sh
1) mon
2) tue
3) wed
#? 1
Monday
[注: 缺省的提示符是 #?]
#! /bin/bash
PS3='Please select a day(1-3):'
select i in mon tue wed 
do
	case $i in
		mon)
			echo 'Monday';break;;
		tue)
			echo 'Tuesday';break;;
		wed)
			echo 'Wednesday';break;;
		*)
			echo 'not exist!';;
	esac
done

改变PS3的默认值,执行结果如下:

bash select1.sh
1) mon
2) tue
3) wed
Please select a day(1-3):1
Monday

[注: 设置了PS3变量后,命令提示符已经成为 "Please select a day (1-3):"]

4、PS4——PS4-“set -x"用来修改跟踪输出的前缀

如果你像下面那样在调试模式下的脚本中,PS4环境变量可以定制提示信息(脚本的名称为ps4.sh):

  1 #! /bin/bash
  2 set -x
  3 echo 'PS4 demo script'
  4 ls -l /etc/|wc -l
  5 du -sh ~

没有改变PS4的值,执行结果如下:

[root@study shell]# bash ps4.sh
+ echo 'PS4 demo script'
PS4 demo script
+ ls -l /etc/
+ wc -l
250
+ du -sh /root
100K	/root

[注: 当使用sex -x跟踪输出时的提示符为 +]

设置PS4后:

  1 #! /bin/bash
  2 export PS4='$0.$LINENO+'
  3 set -x
  4 echo 'PS4 demo script'
  5 ls -l /etc/|wc -l
  6 du -sh ~

PS4在ps4.sh中定义了下面两个变量

o $0 显示当前的脚本名 
o $LINENO 显示的当前的行号

执行结果:

[root@study shell]# bash ps4.sh 
ps4.sh.4+echo 'PS4 demo script'
PS4 demo script
ps4.sh.5+ls -l /etc/
ps4.sh.5+wc -l
250
ps4.sh.6+du -sh /root
100K	/root

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

原文:http://www.itivy.com/linux/archive/2012/3/21/linux-ps-command.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值