bash prompt com o diretor atual abreviado incluindo arquivos dot?

2

Eu tenho o seguinte em meu .bash_profile (de uma pergunta semelhante aqui:

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

No entanto, se o diretório atual estiver dentro de um .dir (como ~ / .vim / bundle /), o prompt exibirá apenas.:

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

Eu gostaria que ele retivesse um caracter para todos os nomes, a menos que ele tivesse um ponto, caso em que mostraria dois, como este:

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

Melhor ainda seria se eu também tivesse o diretório home representado por um ~ como este:

chris@DeathStar:~/.v/bundle$

Alguma idéia?

    
por Chris 16.11.2012 / 19:46

1 resposta

1

Isso parece funcionar, adicionando um . opcional à captura:

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

E para o "ainda melhor":

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

Tags