當您使用 shell 命令時,您可以看到 Linux 的真正美。 默認情況下,shell 提示符顯示主機名和工作目錄。 使用變量您可以更改命令提示符顏色、顯示、日期時間、用戶名等。您甚至可以在 PS1 變量中運行 shell 腳本,其中 PS 代表提示語句。 我將展示一些使用變量 PS1 更改 Linux 環境的示例。
相關閱讀: 如何在 Linux 中更改 Bash Shell 提示多彩
不同shell變量的表示
- PS1: 包含默認提示值的環境變量。 它改變了 shell 命令提示符的外觀和環境。
- PS2:環境變量,其中包含提示用於命令繼續解釋的值。 當您在多行中編寫長命令時,您會看到它。
- PS3: 環境變量,其中包含 shell 腳本中選擇運算符的提示值。
- PS4: 環境變量,其中包含在執行程序期間用於顯示腳本行的提示值 bash 調試模式下的腳本。
請注意,在本文中,我們將使用 迴聲 命令在我們的控制台中查看不同提示的值。
1) 改變 bash 提示 PS1
PS1 是我們每次登錄控制台時看到的默認提示。 對於大多數新聞 Linux 系統,默認值有 u@h:w$ 其中顯示 用戶名、主機名、當前工作目錄 和 用戶權限. 這些只是它可以採用的不同值的示例。 還有一些其他值我們稍後會看到。 我們來看看終端上的PS1提示默認值
# echo $PS1
[e]0;u@h: wa]${debian_chroot:+($debian_chroot)}u@h:w$
包括的部分 debian_chroot 表示如果你是在更改root環境下操作,會修改提示來提醒你。 查看下面以對提示的其餘部分有一個完整的了解:
選項:a
ASCII 鐘形字符(您也可以鍵入 07)d
“Sat Sep 04”格式的日期e
ASCII 轉義字符(您也可以鍵入 33)h
主機名的第一部分(例如“mybox”)H
完整的主機名(例如“mybox.mydomain.com”)j
通過點擊 ^Z 在此 shell 中掛起的進程數l
shell 終端設備的名稱(如“ttyp4”)n
新隊r
回車s
shell 可執行文件的名稱(例如“bash”)t
24 小時制時間(如“23:59:59”)T
12 小時制的時間(例如“11:59:59”)@
時間為 12 小時制,帶 am/pmu
您的用戶名v
版本 bash (如2.04)V
Bash 版本,包括補丁級別w
當前工作目錄(例如“/home/koithara”)W
當前工作目錄的“basename”(例如“koithara”)!
當前命令在歷史緩衝區中的位置#
命令編號(這將在每次提示時計數,只要您鍵入內容)$
如果你不是root,插入一個“$”; 如果你是 root,你會得到一個“#”xxx
插入一個基於三位數字 xxx 的 ASCII 字符(用零替換未使用的數字,例如“ 07”) 反斜杠
[
This sequence should appear before a sequence of characters that don’t move the cursor (like color escape sequences). This allows bash to calculate word wrapping correctly.]
此序列應出現在一系列非打印字符之後。
我們將做一些示例,但在操作這些變量的值之前,我們需要保存包含所有變量的文件。 如果我們犯了錯誤或無需註銷並重新登錄,這將有助於更輕鬆地切換回我們的原始提示。
$ cp ~/.bashrc ~/.bashrc-backup
示例 1: 只顯示用戶名和主機名,用分隔符“-”:
user01@server01:~$ export PS1="u - h$ "
user01 - server01$ echo $PS1
u - h$
我們可以立即在控制台上看到更改。 請注意,在等號之後,我們使用雙引號 (“”) 使用 你 和 H 值。 如果我們使用另一個註釋,shell 會將等號之後的所有內容都視為值,而我們將不會得到我們參加的結果。
示例 2: 我們在顯示用戶名和主機名時模擬錯誤,因為我們將使用 ^ 代替 ”
user01@server01:~$ export PS1=^u - h$ ^
^u - h$ ^$ echo $PS1
^u - h$ ^
示例 3: 將字符串傳遞給 PS1 變量
user01@sever01:~$ export PS1=happy-test$
happy-test$
示例 4: 將時間添加到提示中 t 和工作目錄 w
user01 - server01$ export PS1="[t] u@h:w$ "
[21:38:51] user01@server01:~$
示例 5: 將提示分成多行 n 長命令
user01@server01:~$ export PS1="[t]nu@h:w$ "
[21:44:46]
user01@server01:~$
2)改變 bash 提示PS2
當我們在控制台時,我們可能需要在一個命令中關聯多個命令。 它使一行的命令太長,因此可以通過給出“”在每一行的末尾。 默認交互 PS2 多行命令的值提示是“>” 表示可以繼續第二行的命令,依此類推。
$ echo $PS2
>
示例 1: PS2的默認用法
# apt-get update &&
> apt-get -y install mysql-client python-setuptools curl git unzip apache2 php &&
> apt-get upgrade
示例 2: 您將用一個句子替換該值。 注意最後一個引號之前的轉義
# export PS2=”incomplete? continue here-> ”
# apt-get update &&
incomplete? continue here-> apt-get -y install curl git unzip apache2 &&
incomplete? continue here-> apt-get upgrade
3)改變 bash 提示 PS3
PS3 被使用 選擇 裡面的操作符 bash 腳本。 很難在一個簡單的控制台上獲得它的價值。 為了顯示我們正在談論的內容,我們需要編寫一個簡單的 bash 腳本將幫助我們看到價值。 默認的 PS3 值提示是“#?“
示例 1: 我們將下面的內容複製到一個名為 ps3-value.sh 的文件中
#!/bin/bash
echo "please select a value to display a month on the list below"
select i in jan feb mar apr exit
do
case $i in
jan) echo "January";;
feb) echo "February";;
mar) echo "March";;
exit) exit;;
esac
done
示例 2: 一個顯示PS3值的腳本測試
$ chmod +x ps3-value.sh
:~$./ps3-value.sh
1) jan
2) feb
3) mar
4) exit
#? 2
February
#?
注意 ”#?”是PS3值
示例 3: 修改默認值為“choice”,執行腳本顯示
$ export PS3="choice: "
$./ps3-value.sh
Select a value to display a month on the below
1) jan
2) feb
3) mar
4) exit
choice: 2
February
choice:
看到那個 選擇 是我們的新價值
4)改變 bash 提示 PS4
這 PS4 顯示 a 的每一行 bash 在執行行之前處於調試模式時的腳本。 它有助於知道哪條線沒有給出結果出席。 我們可以用 echo 命令顯示 PS4 的值。 但是在一個 bash 腳本,我們可以看到它使用 bash -X 為執行。 默認的 PS4 值提示是“+“
示例 1: 創建與ps3-value.sh內容相同的文件ps4-value.sh並修改默認值
$ echo $PS4
+
$ export PS4="[script line->:] "
$ chmod +x ps4-value.sh
$ bash -x ps4-value.sh
[script line->: ]echo 'Please select a value to display a month on the list below'
Please select a value to display a month on the list below
[script line->: ]select i in jan feb mar apr bye
1) jan
2) feb
3) mar
4) apr
5) bye
#? 3
[script line->: ]case $i in
[script line->: ]echo March
March
#? 1
[script line->: ]case $i in
[script line->: ]echo January
January
使更改永久化
要使 PS1 在重啟時持久化,您必須將帶有變量的導出命令添加到 .bash_profile 文件中。
$cat .bash_profile
export PS1="[d][t][u@h]"
然後加載您的默認 .bash_profile 文件
$ . .bash_profile
結論
現在你知道不同角色的作用了 bash 提示以及如何修改每一個。 在修改之前保存文件很重要,如果出現錯誤,您必須能夠恢復它。