Customização de prompt de shell e comportamento de cmd

4

Eu quero que meu prompt seja exibido:

  1. diretório de trabalho atual (absoluto), colorido em verde e

  2. em uma nova linha, o cifrão e um espaço vazio.

Estou usando essa linha em .profile

export PS1='\e[0;32m$(pwd)\n\e[m$ '

Então quando em, e. Desktop , meu prompt é assim:

No entanto, às vezes, ao pressionar a seta para cima para executar novamente os comandos anteriores, no início do prompt aparece uma seqüência de caracteres aleatórios que parece não desaparecer, a menos que eu pressione Enter, e. g.

Eu nunca acertei o comando cd cd Desktop . A parte mais estranha é que o backspace nem sequer exclui o primeiro dos dois comandos cd acima!

Alguma sugestão?

    
por pkaramol 25.04.2017 / 11:50

2 respostas

6

Você deve certificar-se de que os caracteres não imprimíveis no prompt estejam em colchetes com escape, caso contrário, o bash não poderá calcular o tamanho do prompt corretamente. Acho que consertei para você:

PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
    
por Zanna 25.04.2017 / 12:01
2

Primeiramente, um grande obrigado à @Zanna por apontar a maneira correta de fazer isso.

Para uma resposta mais completa, ampliei a solução que inclui:

a) o cwd na cor verde

b) em uma nova linha, o ramo git (se houver) em uma cor amarelada com uma estrela vermelha se o ramo estiver sujo

Para realizar b, o prompt do git aware é necessário

É algo assim como uma linha final em ~/.bashrc

export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ '

O prompt agora será expandido para sth assim se você estiver em um branch git

    
por pkaramol 25.04.2017 / 12:24