Bash 提示配置

Bash 提示配置

我最近切换到 Parrot linux,我对它非常满意,但只有一件事,这个默认的花哨的 bash 提示符真的很难看。我以前使用过 zsh,由于某些原因我想回到 bash,但我希望得到与 zsh 相同的提示“主题”,这非常清醒。

zsh“鱼腥味”主题

我特别喜欢它只显示路径中目录名称的第一个字符(当前目录除外)的方式。

我正在搜索如何在 .bashrc 中编写此内容,但我没有找到任何内容。

答案1

大量借贷丹尼斯·卡尔斯梅克的回答:

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.

相关内容