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
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
e %code% , recebo isso (o StackExchange parece processá-los corretamente como caracteres de largura zero, mas eles estão lá):
1
2
1
2%code%2
1
[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?