shell 提示符中当前目录的缩写?

shell 提示符中当前目录的缩写?

vim有一个非常好的功能,当路径有点长时,它会利用该功能:

在此输入图像描述

它缩写了顶部选项卡中文档的路径。有没有办法做类似的事情,这样我的 bash 提示符就不会像这样:

rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $ 

答案1

我喜欢PROMPT_DIRTRIM在bash...

export PROMPT_DIRTRIM=2

会将您的示例提示更改为...

rfkrocktk@work-laptop ../com/tkassembled/ $

这个对我有用。

答案2

尝试:

PROMPT_COMMAND='PS1X=$(perl -pl0 -e "s|^${HOME}|~|;s|([^/])[^/]*/|$""1/|g" <<<${PWD})'

或者,纯 bash:

PROMPT_COMMAND='PS1X=$(p="${PWD#${HOME}}"; [ "${PWD}" != "${p}" ] && printf "~";IFS=/; for q in ${p:1}; do printf /${q:0:1}; done; printf "${q:1}")'

然后

PS1='\u@\h ${PS1X} $ '

产生(注意~for ${HOME}):

rfkrocktk@work-laptop ~/D/P/W/m/s/m/j/c/tkassembled $

我改进了我的答案,感谢@enzotib的

答案3

与 @nicerobot 的答案类似,但稍微短一些:

PROMPT_COMMAND='pwd2=$(sed "s:\([^/]\)[^/]*/:\1/:g" <<<$PWD)'
PS1='\u@\h:$pwd2\$ '

这将显示以下示例输出:

enzotib@acer:/h/enzotib$ cd
enzotib@acer:/h/enzotib$ cd /usr/share/doc/acpid/examples/
enzotib@acer:/u/s/d/a/examples$

答案4

您使用的格式PS1\W(请参阅手册页PROMPTING中的 部分bash)。

PS1="\u@\h \W\$ "

您可能想阅读那里的其他选项,您可以使用命令行做一些很酷的事情。

相关内容