Caracteres não imprimíveis exibidos no prompt do terminal

1

Sem cor, meu prompt é assim:

[0] [dimo414@dimo414:/tmp]
$ echo $PS1 | sed 's/\x1b/\e/g'
\n[0] [dimo414@dimo414:/tmp]\n\$

Eu adiciono algumas cores e \[ ... \] delimita:

[0] [dimo414@dimo414:/tmp]
$ echo $PS1 | sed 's/\x1b/\e/g'
\n[\[\e[32m\]0\[\e[0m\]] [\[\e[34m\]dimo414\[\e[0m\]\[\e[32m\]@dimo414\[\e[0m\]:\[\e[94m\]/tmp\[\e[0m\]]\n\$

Pareceótimo!Maso BashFAQ aponta que:

The \[ \] are only special when you assign PS1, if you print them inside a function that runs when the prompt is displayed it doesn't work. In this case you need to use the bytes %bl0ck_qu0te%1 and %bl0ck_qu0te%2

No entanto, quando eu altero o prompt para usar %code%212121 e %code% , recebo isso (o StackExchange parece processá-los corretamente como caracteres de largura zero, mas eles estão lá):

[0] [dimo414@dimo414:/tmp]
$ echo $PS1 | sed 's/\x1b/\e/g'
\n[\e[32m0\e[0m] [\e[34mdimo414\e[0m\e[32m@dimo414\e[0m:\e[94m/tmp\e[0m]\n\$

Estemesmoaviso-com%code%...%code%-parececorretonoiTerm2noOSX.

Estouusandoessesdoiscomandosparaescapardasseqüênciasdecores:

#Previously(works)printf'\[%s\]'"$(color "$@")"

# Currently (doesn't work on Ubuntu)
printf '%pre%1%s%pre%2' "$(color "$@")"

O que devo fazer em vez da segunda opção para usar %code% ... %code% no Ubuntu?

    
por dimo414 27.04.2016 / 01:50

0 respostas