1. 程式人生 > >Linux 下PS1 PS2 PS3 PS4 提示符詳解

Linux 下PS1 PS2 PS3 PS4 提示符詳解

linux提示符

很多人在用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 ~]$。呵呵

下來就是\[email protected]?自己差表看去,然後不又是一個設在顏色的麽(這裏顯示的不怎麽好),

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

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

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

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

在裏頭的最後一行加上:

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

然後保存。然後 source .bashrc

PS2——再談提示符

一個非常長的命令可以通過在末尾加“\”使其分行顯示。多行命令的默認提示符是“>”。 我們可以通過修改PS2 ,將提示符修改為"continue->" 。

[email protected] ~> 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
[註: 這裏使用 ">" 作為默認提示符]
[email protected] ~> export PS2="continue-> "
[email protected] ~> 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

[email protected] ~> 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

[email protected] ~> ./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

[email protected] ~> 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

[email protected] ~> ./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

[email protected] ~> cat ps4.sh

set –x

echo "PS4 demo script"

ls -l /etc/ | wc –l du -sh ~

[email protected] ~> ./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

[email protected] ~> cat ps4.sh

export PS4=‘$0.$LINENO+ ‘

set -x

echo "PS4 demo script"

ls -l /etc/ | wc -l

du -sh ~

[email protected] ~> ./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的命令提示符]



本文出自 “孤獨沒有顏色” 博客,請務必保留此出處http://tenderness.blog.51cto.com/8855468/1954367

Linux 下PS1 PS2 PS3 PS4 提示符詳解