如何将 bash 提示的当前路径缩短为每个目录一个字母?

Ant*_*nto 8 command-line bash prompt bashrc

我不记得在哪里,但我已经看到 bash 提示的当前路径以一种有趣的方式缩短了:路径中包含的每个目录(最后一个除外)仅被其第一个字母替换。例如:path/to/some/directory将缩短为p/t/s/directory.

我怎样才能重现这种行为?

Mee*_*org 8

玩了一段时间后,我得到了您需要的答案:

将此添加到您的主目录中的 .bashrc 文件中,退出终端并租用它,您将得到提示。

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/([^/]{,2})[^/]*|/\1|g'
}
Run Code Online (Sandbox Code Playgroud)

sps()每次PS1显示提示变量时,它都使用声明的函数来评估路径

IE

/ho/de/De/Ap/Ti$ pwd
/home/deth/Desktop/Apps/Tivo
/ho/de/De/Ap/Ti$ 
Run Code Online (Sandbox Code Playgroud)

或者...如果你坚持一个字母

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/(.)[^/]*|/\1|g'
}
Run Code Online (Sandbox Code Playgroud)

其中显示:

/h/d/D/A/T$ pwd
/home/deth/Desktop/Apps/Tivo
/h/d/D/A/T$ 
Run Code Online (Sandbox Code Playgroud)