Encurte / caminho / para / atual / dir em seu $ PS1 para / p / t / c / dir

Eu vi um recurso semelhante no rangergerenciador de arquivos e queria em meu prompt de comando, eis como fiz isso.

Eu escrevi uma função bash (principalmente uma regexp perl, coloque-a em seu .bashrc):

shortpath() {
echo $
{@/$HOME/~} | perl -pe 's,(/[^/])[^/]+(?=/),1,g'
}

Você pode usá-lo como:

PS1='$(shortpath "$PWD")$ '

Efeito de exemplo com o $PS1acima:

~$ cd my/folder/tree/
~/m/f/tree$ cd /opt/Amnesia/core/
/o/A/core$

Para utf-8, você pode usar uma versão mais longa:

shortpath() {
echo $
{@/$HOME/~} | perl -pe 'BEGIN{ binmode(STDIN,":utf8"); binmode(STDOUT, ":utf8")} s,(/[^/])[^/]+(?=/),1,g'
}