zoukankan      html  css  js  c++  java
  • Linux下PS1、PS2、PS3、PS4使用详解

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

    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提示:

    不使用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的命令提示符]
  • 相关阅读:
    Mybatis和Hibernate
    SpringMVC运行原理
    HTML中class属性里有多个属性值
    json对象(增加数据)
    Ajax请求
    <url-pattern>里的/和/*
    mysql忘记密码
    Eclipse无法正常连接mysql8.0.20
    a+1和&a+1
    可重入函数与不可重入函数
  • 原文地址:https://www.cnblogs.com/baiyw/p/3504854.html
Copyright © 2011-2022 走看看