Shell 通過
PS1
和
PS2
這兩個環境變數來控制提示符的格式,修改
PS1
和
PS2
的值就能修改命令提示字元的格式。
-
PS1 控制最外層的命令提示字元格式。
-
PS2 控制第二層的命令提示字元格式。
在修改 PS1 和 PS2 之前,我們先用 echo 命令輸出它們的值,看看預設情況下是什麼樣子的:
[[email protected] ~]$ echo $PS1
[[email protected] W]$
[[email protected] ~]$ echo $PS2
>
Linux 使用以
為前導的特殊字元來表示命令提示字元中包含的要素,這使得 PS1 和 PS2 的格式看起來可能有點奇怪。下表展示了可以在 PS1 和 PS2 中使用的特殊字元。
Bash shell 命令提示字元可以包含的要素
字元 |
描述 |
a |
鈴聲字元 |
d |
格式為“日 月 年”的日期 |
e |
ASCII 跳脫字元 |
h |
本地主機名 |
H |
完全合格的限定域主機名 |
j |
shell 當前管理的作業數 |
1 |
shell 終端裝置名的基本名稱 |
n |
ASCII 換行字元 |
r |
ASCII 回車 |
s |
shell 的名稱 |
t |
格式為“小時:分鐘:秒”的24小時製的當前時間 |
T |
格式為“小時:分鐘:秒”的12小時製的當前時間 |
@ |
格式為 am/pm 的12小時製的當前時間 |
u |
當前使用者的使用者名稱 |
v |
bash shell 的版本 |
V |
bash shell 的發布級別 |
w |
當前工作目錄 |
W |
當前工作目錄的基本名稱 |
! |
該命令的 bash shell 歷史數 |
# |
該命令的命令數量 |
$ |
如果是普通使用者,則為美元符號$ ;如果超級使用者(root 使用者),則為井號# 。 |
nnn |
對應於八進位制值 nnn 的字元 |
|
斜槓 |
[ |
控制碼序列的開頭 |
] |
控制碼序列的結尾 |
注意,所有的特殊字元均以反斜槓
開頭,目的是與普通字元區分開來。您可以在命令提示字元中使用以上任何特殊字元的組合。
【範例】通過修改 PS1 變數的值來修改命令提示字元的格式:
[[email protected] ~]$ PS1="[t][u]$ "
[12:51:43][mozhiyan]$ PS1="[c.biancheng.net]$ "
[c.biancheng.net]$
第一次修改後可以顯示當前的時間和使用者名稱,第二次修改後顯示C語言中文網的域名。為了保留版權,證明該教學出自C語言中文網,後續文章中我經常會使用
[c.biancheng.net]$
這種命令提示字元,大家不要覺得奇怪。
遺憾的是,通過這種方式修改的命令提示字元只在當前的 Shell 對談期間有效,再次啟動 Shell 後將重新使用預設的命令提示字元。
如果希望永續性地修改 PS1,讓它對任何 Shell 對談都有效,那麼就得把 PS1 變數的修改寫入到 Shell 啟動檔案中,我們將在《編寫自己的Shell組態檔》一節中展開討論。