bash prompt - ciclo de comando longo de volta à mesma linha após adicionar cor

3

Nota: Estou usando o Putty e meu TERM está definido como XTERM.

Eu adicionei a cor ao meu prompt bash como

PS1="\[3[0;32m\]\d \t \u\e[1;33m@\H /\W $ \[3[1;37m\]"

apenas para simplificar o PS1 em inglês -

${GREEN}\d \t \u{YELLOW}@\H \W $ {reset-color}

Agora, sempre que meu comando é longo e não se encaixa na linha de tela, ele deve vir para a próxima linha, mas isso não acontece e o caractere inicial começa a ser substituído, e cada caractere que eu digito. Todo o comando está presente, mas não é visto completamente. Ele é executado normalmente, então é apenas a tela que está ficando distorcida.

A situação piora quando volto ao primeiro caractere e tento excluir os caracteres, toda a linha de comando se move para cima e para cima apagando os dados anteriores que estavam na tela.

Depois de alguma tentativa e erro ao remover alguma parte, descobri que a adição de @ leva ao comportamento acima

\e[1;33m

Eu realmente não lembro porque eu coloquei isso e não consigo rastrear isso.

Você pode me ajudar a resolver esse problema? Os comandos longos devem entrar na próxima linha e não na mesma linha.

    
por mtk 25.03.2013 / 11:04

1 resposta

4

A seqüência de escape ANSI logo antes do sinal “@” não está entre \[ e \] . Coloque-o e deve ficar bem:

PS1='\[3[0;32m\]\d \t \u\[\e[1;33m\]@\H /\W $ \[3[1;37m\]'

A propósito, o que você chama de "reset-color" é apenas configurá-lo para branco. Para realmente redefini-lo, use 3[0m .

    
por 25.03.2013 / 11:10