Como posso evitar esses caracteres espúrios no meu prompt bash?

2

Eu tenho o Fedora 20 e gostaria de adaptar o prompt do bash para torná-lo ainda mais útil para mim. No momento, meu prompt do PS1 é definido por essas linhas no meu arquivo ~ / .bash_profile:

 LP=" Last prompt at: "
 PS1="\[3[s3[0;0H3[0;47m3[K3[1;34m[\$LP\]t3[0m3[u[<\u@\h \W>]\$ "
 echo

O que me dá uma boa linha no topo da tela, com uma barra cinza (que não aparece nessa cópia) e a hora do último prompt, assim:

[ Last prompt at: ]09:22:46
[<Harry@localhost ~>]$ 

Sem o echo , quando uma tela do terminal é aberta, o prompt obscurece a mensagem na linha superior. O que o eco faz é ecoar seu argumento, de modo que quando .bashrc. é executado como um novo terminal é aberto, sem nenhum argumento, ele vai para uma nova linha, deixando a linha superior sozinha. Os prompts subseqüentes não executam .bashrc, portanto, o eco para uma nova linha não acontece.

Minha pergunta aqui é sobre os colchetes "[]" no prompt em torno da string Last prompt at: . Por favor, como posso evitar que esses parênteses apareçam na mensagem exibida?

RESOLVIDO
Em resposta à resposta do @ guido. Eu já tinha tentado apenas remover os colchetes, mas depois perdi a corda completamente. Eu observo aqui que você adicionou um espaço após o LP, e isso de fato me dá o que eu quero, mas eu não entendo porque o espaço é necessário: por favor, você poderia adicionar à sua resposta para explicar isso?

    
por Harry Weston 27.05.2014 / 11:07

2 respostas

5

Basta remover os colchetes do seu PS1 (também houve um erro de digitação em torno de \t ):

LP=" Last prompt at: "
PS1="\[3[s3[0;0H3[0;47m3[K3[1;34m\$LP \t3[0m3[u\][<\u@\h \W>]\$ "
echo
    
por 27.05.2014 / 11:55
4

O Guido já respondeu à sua pergunta específica , mas apenas uma observação:

Além disso, você também pode definir sua região de rolagem para ser da segunda linha, para que a rolagem não apague a linha.

PS1="\[\e[s\e[2;0r\e[H\e[0;47m\e[K\e[1;34m$LP\t\e[0m\e[u\]<\u@\h \W>\$ "

(embora, pessoalmente, eu não fizesse esse tipo de coisa no nível do shell, mas, por exemplo, usando screen e seu recurso hardstatus)

    
por 27.05.2014 / 13:06

Tags