Linhas longas se sobrepõem no prompt personalizado do Bash PS1

13

Configurei um prompt de PS1 bash de duas linhas, com nome do servidor, hora, nome de usuário e outras variáveis úteis.

PS1="\n\[3[1;34m\]260260 \u @ $SERVER_NAME""$BBlue"" \w""$Color_Off  \n\[3[0;36m\]260260 \d \t $ \[3[0;39m\]"

Fonte completa do Github aqui .

O problema é que as linhas longas são frequentemente enroladas em si mesmas, o que significa que a nova linha se sobrepõe à anterior.

O problema é inconsistente: algumas linhas são agrupadas corretamente, outras não.

Alguma ideia de como corrigir isso?

    
por Adam Matan 04.02.2013 / 11:04

3 respostas

14

Aqui está o meu fantástico PS1 de duas linhas para o prompt do bash.

\[\e[1;32m\]\H\[\e[0m\] :: \[\e[1;30m\]\d\[\e[0m\] \@ :: \[\e[1;33m\]\w\n\[\e[1;34m\]\u $ \[3[0m\]

Então aqui está o que eu fiz. Se esta fosse minha cor:

\e[1;32m

Eu mudei para:

\[\e[1;32m\]

Essencialmente, você precisa colocá-lo em:

\[$mycolor\]

Finalize esta resposta .

    
por varunyellina 25.02.2013 / 15:12
7

Encontrados esta solução on-line, que sugeriu colchetes de fechamento para as variáveis de cor:

Altere isto:

Black='\e[0;30m'        # Black
Red='\e[0;31m'          # Red
Green='\e[0;32m'        # Green

para:

Black='\e[0;30m\]'        # Black
Red='\e[0;31m\]'          # Red
Green='\e[0;32m\]'        # Green

Eu comentei a alteração - espero que funcione como esperado.

    
por Adam Matan 04.02.2013 / 12:47
0

A minha solução preferida para a questão das linhas longas sobrepostas no bash PS1 é ter um \n no final da (s) linha (s) imediata (s) do PS1.

por exemplo,

Se você quiser todas as minhas outras coisas - time, user, host, directory e git branch (!) você pode usar isto (mac ou linux):

link

    
por Michael Durrant 24.09.2014 / 00:04

Tags