Bash

Bash 提示配置

  • December 28, 2018

我最近切換到 Parrot linux,對此我很滿意,但只有一件事,這個預設的花哨的 bash 提示真的很難看。我以前使用過 zsh,出於某些原因,我想回到 bash,但我很想得到與 zsh 相同的提示“主題”,它非常清醒。

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"這裡的字元串是為了剝離目前目錄而呼叫的結果。然後該字元串會進行兩次替換(在-esed 選項中給出):

  1. 用波浪號替換“$HOME”目錄的任何外觀,並且
  2. 將任何路徑元素(正斜杠、擷取的單個字元.,然後是任意數量的非正斜杠)替換為正斜杠,後跟該(擷取的)單個字元;g用標誌“全域”重複該模式匹配。我已將其用作:搜尋sed和替換分隔符而不是 common /,以避免在試圖逃避所需的正斜杠時傾斜牙籤綜合症。

最後,我們將 PS1 設置為使用_abbrev_pwd通常放置$PWD.

引用自:https://unix.stackexchange.com/questions/490222