prompt是指終端提示符(Shell提示符),是在linux操作系統中,提示進行命令輸入的一種工作提示符。對于普通用戶,Base shell默認的提示符是美元符號“$”;對于超級用戶(root用戶),Bash Shell默認的提示符是井號“#”;該符號表示Shell等待輸入命令。
prompt是指終端提示符,是在linux操作系統中,提示進行命令輸入的一種工作提示符。
當您激活終端模擬器或者在 Linux 控制臺登錄后,即可呈現出 Shell 提示符。命令提示符是進入Shell的門戶,也是輸入Shell命令的位置。
對于普通用戶,Base shell 默認的提示符是美元符號$;對于超級用戶(root 用戶),Bash Shell 默認的提示符是井號#。該符號表示 Shell 等待輸入命令。
不同的 Linux 發行版使用的提示符格式不同。例如在 CentOS 中,默認的提示符格式為:
[mozhiyan@localhost?~]$
這種格式包含了以下三個方面的信息:
-
啟動 Shell 的用戶名,也即 mozhiyan;
-
本地主機名稱,也即 localhost;
-
當前目錄,波浪號~是主目錄的簡寫表示法。
Shell 通過PS1和PS2兩個環境變量來控制提示符格式:
-
PS1 控制最外層命令行的提示符格式。
-
PS2 控制第二層命令行的提示符格式。
在 Shell 中初次輸入命令,使用的是 PS1 指定的提示符格式;如果輸入一個命令后還需要輸入附加信息,Shell 就使用 PS2 指定的提示符格式。請看下面的例子:
[mozhiyan@localhost?~]$?echo?"本站" 本站 [mozhiyan@localhost?~]$?echo?"https://www.yisu.com/" https://www.yisu.com/ [mozhiyan@localhost?~]$?echo?" >?yan >?chang >?sheng >?" yan chang sheng [mozhiyan@localhost?~]$
echo is a command for printing that outputs numbers, variables, strings, etc. In this example, we are using echo to print a string.。
字符串是一組由” “包圍起來的字符序列,echo 將第一個”作為字符串的開端,將第二個”作為字符串的結尾。此處的字符串就可以看做 echo 命令的附加信息。
在這個例子中,前兩次使用 echo 命令時,都在同一行中緊接著字符串輸入了所有的附加信息。第三次使用 echo 時,將字符串分成多行,echo 遇到第一個”認為是不完整的附加信息,所以會繼續等待用戶輸入,直到遇見第二個”。輸入的附加信息就是第二層命令,所以使用>作為提示符。
要顯示提示符的當前格式,可以使用 echo 輸出 PS1 和 PS2:
[mozhiyan@localhost?~]$?echo?$PS1 [u@h?W]$ [mozhiyan@localhost?~]$?echo?$PS2 > [mozhiyan@localhost?~]$
Shell 使用以為前導的特殊字符來表示命令提示符中包含的要素,這使得 PS1 和 PS2 的格式看起來可能有點奇怪。下表展示了可以在 PS1 和 PS2 中使用的特殊字符。
字符 | 描述 |
---|---|
鈴聲字符 | |
d | 格式為“日 月 年”的日期 |
e | ASCII轉義字符 |
h | 本地主機名 |
H | 完全合格的限定域主機名 |
j | shell當前管理的作業數 |
shell終端設備名的基本名稱 | |
ASCII換行字符 | |
ASCII回車 | |
s | shell的名稱 |
格式為“小時:分鐘:秒”的24小時制的當前時間 | |
T | 格式為“小時:分鐘:秒”的12小時制的當前時間 |
@ | 格式為am/pm的12小時制的當前時間 |
u | 當前用戶的用戶名 |
bash shell的版本 | |
V | bash shell的發布級別 |
w | 當前工作目錄 |
W | 當前工作目錄的基本名稱 |
! | 該命令的bash shell歷史數 |
# | 該命令的命令數量 |
$ | 如果是普通用戶,則為美元符號$;如果超級用戶(root 用戶),則為井號#。 |
nn | 對應于八進制值 nnn 的字符 |
斜杠 | |
[ | 控制碼序列的開頭 |
] | 控制碼序列的結尾 |
所有特殊字符均以反斜杠作為前綴以便與普通字符區分。您可以在命令提示符中使用以上任何特殊字符的組合。
我們可以通過修改 PS1 變量來修改提示符格式,例如:
[mozhiyan@localhost?~]$?PS1="[ ][u]$?" [17:27:34][mozhiyan]$
新的 Shell 提示符現在可以顯示當前的時間和用戶名。不過這個新定義的 PS1 變量只在當前 Shell 會話期間有效,再次啟動 Shell 時將重新使用默認的提示符格式。