도트 파일을 포함하여 축약된 현재 디렉터리를 사용하는 bash 프롬프트?

도트 파일을 포함하여 축약된 현재 디렉터리를 사용하는 bash 프롬프트?

내 .bash_profile에 다음이 있습니다(from유제여기:

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

그러나 현재 디렉터리가 .dir(예: ~/.vim/bundle/) 내에 있으면 프롬프트에는 .:만 표시됩니다.

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

점이 없는 경우 모든 디렉토리 이름에 대해 1자를 예약하고 싶습니다. 이 경우 다음과 같이 2자를 표시합니다.

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\$ '

관련 정보