Como posso reduzir meu prompt personalizado do PS1?

0

Eu tenho atualmente meu prompt como

durrantm@Castle2012-Ubuntu-laptop01:~/Dropnot/webs/rails_apps/linker (master)
$ 

que eu realmente gosto, pois mostra meu nome de usuário, máquina, diretório e git branch!

Como posso encurtar a parte da máquina?

i.e. como poderia ter sido:

durrantm@Castle...:~/Dropnot/webs/rails_apps/linker (master)
$ 

Eu tentei várias combinações de h: 0: 6, mas não tive sorte em obter uma sintaxe correta que funcionasse.

Meu .bashrc usa isso:

function parse_git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}

PS1='\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$(parse_git_branch)\n\$ '
    
por Michael Durrant 08.02.2014 / 16:15

2 respostas

2

Melhorando a resposta de terdon , você nem precisa invocar esses dois processos ( hostname e% código%). Apenas use a manipulação de string de cut :

PS1="\[3[01;32m\]\u@${HOSTNAME:0:10}\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$(parse_git_branch)\n\$ "
    
por 08.02.2014 / 23:24
2

Eu tenho que concordar com @aularon que faria mais sentido encurtar seu nome de host, que é um nome ridiculamente longo. No entanto, você também pode obter o que deseja analisando:

## For example, take the first 10 chars of hostname
name=$(hostname | cut -c -10);

## Now use $name in your PS1 instead of \h
PS1="\[3[01;32m\]\u@$name\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$(parse_git_branch)\n\$ "

Isso deve produzir um prompt como:

durrantm@Castle2012:~/Dropnot/webs/rails_apps/linker (master)
    
por 08.02.2014 / 16:57

Tags