Linux: o prompt bash para colorir interromperá o retorno de carro

21

Quando tento colorir o prompt bash desta forma:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

quebra o retorno de carro (em vez de ir para uma nova linha quando a linha está cheia, inicia na mesma linha e apaga o texto de entrada).

Se eu remover a sequência de cores, tudo funcionará bem.
Eu uso o Ubuntu 11.10 e terminal (o guake também tem o mesmo bug).

    
por Abonec 12.12.2011 / 20:58

2 respostas

37

Você deve agrupar todas as seqüências de escape entre \[ e \] para 'readline' calcular corretamente o comprimento visível do prompt. Sem eles, 'readline' acha que o prompt é mais longo do que é e não sabe quando o texto chega à margem.

PS1="\[\e[;31m\][\u@\h \W]\$ \[\e[m\]"
    
por 12.12.2011 / 21:08
1

a dica [e] funcionou no bash no OS X 10.8.2 também.

Eu uso:

PS1="[\e[0;37m\W\$(git branch 2>/dev/null | grep -e '* ' | sed 's/^..(.*)/{}/') \$ \e[m ]"

que mostra meu branch git atual em uso.

    
por 23.02.2013 / 11:00