Bash
Bash 提示配置
我最近切換到 Parrot linux,對此我很滿意,但只有一件事,這個預設的花哨的 bash 提示真的很難看。我以前使用過 zsh,出於某些原因,我想回到 bash,但我很想得到與 zsh 相同的提示“主題”,它非常清醒。
我特別喜歡它只顯示路徑中目錄名稱的第一個字元的方式,除了目前目錄。
我正在尋找如何在 .bashrc 中編寫它,但我什麼也沒找到。
從Dennis Kaarsemaker 的回答中大量借用:
PROMPT_COMMAND='_abbrev_pwd=$(sed -e "s:$HOME:~:" -e "s:/\(.\)[^/]*:/\1:g" <<< "$(dirname "$PWD")")/"$(basename "$PWD")"' PS1='\u@\h ${_abbrev_pwd}> '
PROMPT_COMMAND 變數是一個特殊的 bash 變數,每次將要列印提示時都會執行該變數。這裡的程式碼設置了一個變數,命名
_abbrev_pwd
為以下元素的串聯:
- sed 命令的輸出:
$(sed -e ... <<< ...)
- 正斜杠
/
- “目前”目錄:
$(basename "$PWD")
sed 命令本身將此處的字元串作為輸入;
dirname "$PWD"
這裡的字元串是為了剝離目前目錄而呼叫的結果。然後該字元串會進行兩次替換(在-e
sed 選項中給出):
- 用波浪號替換“$HOME”目錄的任何外觀,並且
- 將任何路徑元素(正斜杠、擷取的單個字元
.
,然後是任意數量的非正斜杠)替換為正斜杠,後跟該(擷取的)單個字元;g
用標誌“全域”重複該模式匹配。我已將其用作:
搜尋sed
和替換分隔符而不是 common/
,以避免在試圖逃避所需的正斜杠時傾斜牙籤綜合症。最後,我們將 PS1 設置為使用
_abbrev_pwd
通常放置$PWD
.