Linux 下PS1 PS2 PS3 PS4 提示符詳解

很多人在用Linux時,對提示符都不太注重,能夠利用好提示符可更直觀地查看,利於自己的判斷

Linux下有PS1 PS2 PS3 PS4 四類提示符,這四個變量都是環境變量,至於系統裏有哪些環境變量,可使用命令 “env”來查看

PS1命令提示符

PS1有那些配置,或者說PS1裏頭都能配置些命令提示符的什麼東西:

    \d :代表日期,格式爲weekday month date,例如:"Mon Aug 1"

    \H :完整的主機名稱。例如:我的機器名稱爲:fc4.linux,則這個名稱就是fc4.linux

    \h :僅取主機的第一個名字,如上例,則爲fc4,.linux則被省略

    \t :顯示時間爲24小時格式,如:HH:MM:SS

    \T :顯示時間爲12小時格式

    \A :顯示時間爲24小時格式:HH:MM

    \u :當前用戶的賬號名稱

    \v :BASH的版本信息

    \w :完整的工作目錄名稱。家目錄會以 ~代替

    \W :利用basename取得工作目錄名稱,所以只會列出最後一個目錄

    \# :下達的第幾個命令

    \$ :提示字符,如果是root時,提示符爲:# ,普通用戶則爲:$

PS1中設置字符序列顏色的格式爲:\[\e[F;Bm\]    其中“F”爲字體顏色,編號30~37;“B”爲背景色,編號40~47。 不過呢,能設置顏色,他就肯定能夠取消設置,注意:這裏的取消設置,和不設置是兩嗎事情!取消設置:\[\e[m\]

顏色表

       前景   背景   顏色

  30      40      黑色

  31      41      紅色

  32      42      綠色

  33      43      黃色

  34      44      藍色

  35      45      紫紅色

  36      46      青藍色

  37      47      白色

沒有人傻乎乎的設置爲白色吧.....

代碼      意義

0            OFF

1            高亮顯示

4            underline            

7            反白顯示

8            不可見

[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]

這是我的配置

現在來看\[\e[32m\],注意:最前面的那個方括號不是用在這裏的。這不就說名了要設置爲綠色麼,來看看我的命令提示符:[#4#caopeng@cp ~]$ 有綠色的吧。

然後#\##就是顯示現在運行的是第幾條命令了,看到了吧。我這裏是第四條。

下來又是一個設置顏色的[\e[31m\],是設置爲紅色吧,這不也有紅色麼。[#4#caopeng@cp ~]$。呵呵

下來就是\u@這是嘛意思?自己差表看去,然後不又是一個設在顏色的麼(這裏顯示的不怎麼好),

\h  \w 是什麼意思?\h 是說:僅取主機的第一個名字,\w是說:顯示完整的路徑,但是不知到爲什麼家他顯示~而不是絕對路徑。

在下來不是一個   ]         麼 。開頭不有一個   [   麼。這兩個剛好搭配在一起的。

然後最的這個   \[\e[m\]   使用來關閉顏色設置的。要是你沒有這個的話;那麼,你的命令提示符,包括你通過命令提示符輸出的東西都是和最後一次的顏色設置相同(除了一些有特殊意義的文件  )。

在用戶的根目錄下的 ".bashrc"   注意前面有個"."  表示是隱藏的。

在裏頭的最後一行加上:

PS1='[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]'

然後保存。然後 source  .bashrc 

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的命令提示符]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章