首頁 > 軟體

Linux系統下的終端命令提示字元設定(PS1)

2020-06-16 17:29:56

PS(Prompt Sign): 是指命令提示字元,例如在Fedora 12的終端下:[linuxidc@liutao ~]$ ,在設定PS1環境變數時,我們需要用到預設的一些特殊符號來設定PS1。

Linux中PS1設定:
在/etc/.bashrc中,找到PS1變數的定義,如果沒有,手動加上:
可以將顯示輸出到標題列上:

[root@elk-node1 ~]# vim /root/.bashrc
...........
export PS1="[e]2;u@H wae[32;1m]>[e[0m]"
[root@elk-node1 ~]# source /root/.bashrc
export PS1="[e]2;u@H wae[32;1m]>[e[0m]"
[root@elk-node1 ~]# . /root/.bashrc
>cd /usr/local/
>pwd
/usr/local
>

最常見的設定:

1)粉紅色的

[root@elk-node1 ~]# vim /root/.bashrc
...........
export PS1="[e[35;1m][u@h W]$>[e[0m]"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 local]$>cd /usr/local/
[root@elk-node1 ~]$>cd /usr/local/
[root@elk-node1 local]$>pwd
/usr/local
[root@elk-node1 local]$>

2)綠色設定

[root@elk-node1 ~]# vim /root/.bashrc
...........
export PS1="[e[32;1m][u@h W]$>[e[0m]"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 local]$>cd /usr/local/
[root@elk-node1 ~]$>cd /usr/local/
[root@elk-node1 local]$>pwd
/usr/local
[root@elk-node1 local]$>

 

------------------------------------------------------------------------------------------

上面切換到顯示的是當前簡介路徑。那麼如何讓linux終端命令提示字元號顯示全路徑,而不是當前簡介路徑?

下面兩種方法:

1)第一種方法:在/root/.bashrc檔案下新增下面內容
[root@elk-node1 ~]# vim /root/.bashrc
.......
export PS1="[u@h w]$"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$                 #顯示的是全路徑

如果將上面的內容改為export PS1="[u@h w]"#,那麼顯示的就是#符號

[root@elk-node1 ~]# vim /root/.bashrc 
.......
export PS1="[u@h w]"#
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]#cd /usr/local/
[root@elk-node1 /usr/local]#                 #顯示的是全路徑

注意:預設的PS1="[u@h W]$",其中W就是路徑的設定選項,大寫的W是簡介模式,小寫的w為全路徑模式。

2)第二種方法:在/root/.bashrc檔案下新增下面內容:

[root@elk-node1 ~]# vim /root/.bashrc
.......
export PS1="[u@h `pwd`]$"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$    #顯示的是全路徑


改為#號
[root@elk-node1 ~]# vim /root/.bashrc
.......
export PS1="[u@h `pwd`]#"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$      #顯示的是全路徑

 

-------------------------------------------------------------------------------------------------------------------------------

 使用方法:

# PS1='自定義內容'

注意兩邊的單引號

範例: PS1='(u@H dt)$'

----------------------------------------------------------------------------------------------------------------

PS1:就是使用者平時的提示符。

PS2:第一行沒輸完,等待第二行輸入的提示符。 

Linux系統提示符是用系統變數PS1來定義的。一般系統預設的形式是:[username@host工作目錄]$.
用echo $PS1可以得到PS1的值,即PS1="[u@h w]"$
登入後可以更改PS1的顯示樣式,但是當退出重新啟動登入進入系統後,樣式又變成系統預設的樣式了,如果要徹底改變它的樣式,只能從組態檔中改。
PS是在使用者根目錄下的.bash_profile中定義的。

如:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startupprograms

#以下是設定的PS1的值 

PS1="[u@h w]$"

PATH=$PATH:$HOME/bin

#使用export把PS1輸出,以使它可以在子shell中生效,這會造成ROOT使用者的也採用此樣式

#export PS1 要慎用 

export PATH 

unset USERNAME

下面簡單說說環境下預設的特殊符號所代表的意義:

d :代表日期,格式為weekday month date,例如:"Mon Aug1"

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變數使提示符成為彩色。在PS1中設定字元序列顏色的格式為:
[e[F;Bm]
其中``F''為字型顏色,編號30~37;``B''為背景色,編號40~47。
可通過``e[0m''關閉顏色輸出;特別的,當B為1時,將顯示加亮加粗的文字,詳細請看下面的顏色表與程式碼表。

顏色表

前景 背景 顏色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

 

程式碼 意義
-------------------------
0 OFF
1 高亮顯示
4 underline
5 閃爍
7 反白顯示
8 不可見

如果想要設定終端提示符的樣式只要把$PS1在~/.bahrc指定即可比,比如我的設定如下:
設定一:
PS1="[e[32m][u@h w]$[e[m]"
export PS1
效果:
[LinuxSong@test ~]$ 

設定二:

if [ $TERM = 'linux' ]; then
export PS1="[[e[36;1m]u@h[e[31;1m]w[e[32;1m]]> "
zhcon --utf8
clear
elif [ $TERM = "xterm" ]; then
export PS1="[[e[31;1m]we[0m]> "
fi

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136597.htm


IT145.com E-mail:sddin#qq.com