前段时间有朋友问了PS1、PS2、PS3、PS4的使用,今天正好把这块内容分享给大家~

1、PS1——默认提示符

如下所示,可以通过修改Linux下的默认提示符,使其更加实用。在下面的例子中,默认的PS1的值是“\s-\v\$”,显示出了shell的名称的版本。通过修改,可以使其显示用户名、主机名和当前工作目录。

范例

[注: 提示符修改为 "username@hostname current-dir>的形式]

PS1使用的一些代码如下:o \\u -- 用户名 o \h -- 主机名 o \w -- 当前目录的完整路径。注意,在PS1值之后有一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性。

2、PS2——再谈提示符

一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 可以通过修改PS2 ,将提示符修改为"continue->" 。

~> 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[注: 这里使用 ">" 作为默认提示符]

范例

[注: 与上面类似,用 "continue-> " 作提示符;用“\”使长命令分行显示,非常易读]

3、PS3——Shell脚本中使用select时的提示符

用环境变量PS3定制shell脚本的select提示:

不使用PS3的脚本输出:

~> cat ps3.shselect i in mon tue wed exitdo case $i in mon) echo "Monday";; tue) echo "Tuesday";; wed) echo "Wednesday";; exit) exit;; esacdone ~> ./ps3.sh1) mon2) tue3) wed4) exit#? 1Monday#? 4[注: 缺省的提示符是 #?]

使用PS3的脚本输出:

~> cat ps3.shPS3="Select a day (1-4): "select i in mon tue wed exitdo case $i in mon) echo "Monday";; tue) echo "Tuesday";; wed) echo "Wednesday";; exit) exit;; esacdone ~> ./ps3.sh1) mon2) tue3) wed4) exitSelect a day (1-4): 1MondaySelect a day (1-4): 4[注: 设置了PS3变量后,命令提示符已经成为 "Select a day (1-4):"]

执行脚本:

[root@node1 test]# chmod u+x ps3[root@node1 test]# ./ps31) mon2) tue3) wed4) exitSelect a day (1-4): 3WednesdaySelect a day (1-4): 4[root@node1 test]# cat ps3#!/bin/bashPS3="Select a day (1-4): "select i in mon tue wed exitdo case $i in mon) echo "Monday";; tue) echo "Tuesday";; wed) echo "Wednesday";; exit) exit;; esacdone

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

在调试模式下的脚本中,PS4环境变量可以定制提示信息:

没有设置PS4时的shell脚本输出:

~> cat ps4.sh set –xecho "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 –l243++ du -sh /home/ramesh48K /home/ramesh[注: 当使用sex -x跟踪输出时的提示符为 ++]

设置PS4后的脚本输出:

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

o $0 显示当前的脚本名

o $LINENO 显示的当前的行号

~> cat ps4.shexport PS4='$0.$LINENO+ 'set -xecho "PS4 demo script"ls -l /etc/ | wc -ldu -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 -l243../ps4.sh.5+ du -sh /home/ramesh48K /home/ramesh注: 使用PS4后使 "{script-name}.{line-number}+" 成为set –x的命令提示符]

PS1、PS2、PS3、PS4提示符还是挺好玩的,大家可以自己做一些实验研究下,纯当娱乐~

查看原文 >>
相关文章