PS1

linux操作下脚本不小心误删了很多东西,变成了下面的样子

bash-4.3#

bash-4.3#

bash-4.3#

bash-4.3#

bash-4.3#


linux下shell显示-bash-3.2 不显示路径解决方法

在linux shell中不显示路径了,用起来很不方便.


如何改为显示路径的shell呢


步骤如下:


vi ~/.bash_profile


在最后加上

export PS1=’[\u@\h \W]\$’


然后执行

source ~/.bash_profile


这样shell就可以显示路径了


注意:以上命令建议手动输入,不要复制。


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 �Cx

echo "PS4 demo script"

ls -l /etc/ | wc �Cl du -sh ~

 

ramesh@dev-db ~> ./ps4.sh

    ++ echo 'PS4 demo script'

PS4 demo script

++ ls -l /etc/

++ wc �Cl

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



uImage-3.10.17-1.0.2_qmx6+gc5c5cfa


你可能感兴趣的:(PS1)