Linux下PS1 PS2 PS3 PS4使用詳解

2021-07-26 03:54:29 字數 4443 閱讀 7382

shell除錯可以設定ps4

$ echo $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的指令碼輸出:

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

[注: 當使用*** -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後使 ".+" 成為set –x的命令提示符]

linux下PS1 PS2 PS3 PS4最全詳解

通過設定環境變數ps1 ps2 ps3以及ps4來自定義使用者命令列的字元顯示。如果要長期永久性修改提示符,可以將修改提示符的命令新增到 home profile或 home bash profile檔案中 ps1 ps1是主提示符變數,也是預設提示符變數。預設值 u h w 顯示使用者主機名稱工作...

Linux下PS1 PS2 PS3 PS4使用詳解

shell除錯可以設定ps4 echo ps4 原貼 1 ps1 預設提示符 如下所示,可以通過修改linux下的預設提示符,使其更加實用。在下面的例子中,預設的ps1的值是 s v 顯示出了shell的名稱的版本。我們通過修改,可以使其顯示使用者名稱 主機名和當前工作目錄。bash 3.2 exp...

linux環境變數設定 PS1,PS2

ps1 就是使用者平時的提示符。ps2 第一行沒輸完,等待第二行輸入的提示符。linux系統提示符是用系統變數ps1來定義的。一般系統預設的形式是 username host 工作目錄 用echo ps1可以得到ps1的值,即ps1 u h w 登入後可以更改ps1的顯示樣式,但是當退出重啟登入進入...