bash 提示符带有缩写的当前目录,包括点文件?

bash 提示符带有缩写的当前目录,包括点文件?

我的 .bash_profile 中有以下内容(来自类似的问题这里:

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

但是,如果当前目录位于 .dir 内(例如 ~/.vim/bundle/),则提示符仅显示 .:

chris@DeathStar:/U/c/./bundle$

我希望它为所有目录名保留 1 个字符,除非它有一个点,在这种情况下它会显示两个,如下所示:

chris@DeathStar:/U/c/.v/bundle$

如果我还有像这样表示的主目录就更好了~

chris@DeathStar:~/.v/bundle$

有任何想法吗?

答案1

这似乎可以解决问题,.为捕获添加一个可选:

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

为了“更好”:

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

相关内容