Como faço para que meu terminal bash pare de adicionar partes de comandos anteriores à minha linha atual?

1

Estou usando o Ubuntu (10.04) com o bash e estou me deparando com um problema estranho. Depois de usar a seta para cima para voltar ao meu histórico de comandos e voltar a um dos comandos mais longos (ou seja, um com caracteres suficientes para envolver na tela), mas continue rolando para frente ou para trás, o primeiro 8 ou 9 caracteres desse longo comando aparecem na minha linha de entrada.

Esses personagens não têm nenhum impacto em qualquer comando que eu eventualmente digite, mas às vezes é difícil descobrir o que estou tentando digitar.

Parece algo assim primeiro:

  name@machine:~$ 

Então se torna isso:

  name@machine:~$ scp -i /h

depois de voltar para um dos meus longos comandos scp . Se eu entro em um comando, assim:

  name@machine:~$ scp -i /hls -l

executa o comando: ls -l

Editado para adicionar o valor de PS1 no meu ~ / .bashrc

  PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$ '

Editado novamente para adicionar o valor de echo $PS1

  \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$
    
por Andrew Larned 08.09.2010 / 15:15

3 respostas

1

Você perdeu um \[ (aquele após \w ), tente isto:

PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$ '
    
por 08.09.2010 / 22:12
4

O valor da variável PS1 contém alguns caracteres não imprimíveis, como sequências, para definir cores. Eles precisam ser agrupados em \[ e \] , para que não sejam contados quando o Bash calcular onde exibir as coisas e movê-las quando você fizer coisas como percorrer os comandos anteriores. Se você mostrar seu PS1 , posso ser mais específico.

    
por 08.09.2010 / 15:59
0

Quando isso acontece:

  • Certifique-se de que a janela do seu terminal seja larga o suficiente.
  • Digite o comando: reset
  • Pressione o controle + L.
por 08.09.2010 / 23:58