O prompt do terminal está sendo gravado por cima de [duplicate]

2

Eu deveria começar isto dizendo que esta sessão de terminal é via ssh do Windows PuTTY para o Linux OpenSSH. Não tenho certeza se isso é importante, mas achei que deveria dizer de qualquer maneira.

Atualmente, quando eu escrevo mais no terminal do que cabe em uma linha, o texto começa na mesma linha em vez de um novo, e faz com que o meu prompt comece assim:

trevor@SEARS-SERVER:~$

para isto (exemplo de texto claro):

ne lineSEARS-SERVER:~$ this is the text line that is too long to fit on o

Atualmente meu PS1 está configurado no meu .bashrc com:

export PS1="\n[$(date +%r)] \e]0;\e[0;32m\u\e[m@\e[38;5;52m\h\e[m:\e[38;5;240m\w\e[m\e[97m$\e[m"

Além disso, quando as janelas estão abaixo de uma certa largura, isso acontece:

m$ :32:40 PM] trevor@SEARS-SERVER:~

Eu sei que isso tem algo a ver com minha configuração do PS1, ou PuTTY, mas não sei qual, ou por que / como. Alguma ajuda?

    
por Trevor Sears 14.07.2016 / 23:00

1 resposta

5

O problema é o seu prompt:

export PS1="\n[$(date +%r)] \e]0;\e[0;32m\u\e[m@\e[38;5;52m\h\e[m:\e[38;5;240m\w\e[m\e[97m$\e[m"

Para fazer o bash ignorar as seqüências de escape (que são não-imprimíveis), você tem que colocar entre aquelas com \[ e \] .

Caso contrário, o bash conta isso como parte do tamanho do seu prompt na tela e fica confuso sobre quando o terminal irá automaticamente para a próxima linha.

Algo como isso ajudaria:

export PS1="\n[$(date +%r)] \[\e]0;\e[0;32m\]\u\[\e[m\]@\[\e[38;5;52m\]\h\[\e[m\]:\[\e[38;5;240m\]\w\[\e[m\e[97m\]$\[\e[m\]"
    
por 14.07.2016 / 23:06