Os caracteres não imprimíveis escapam aos caracteres ainda necessários para a definição do PS1?

0

Ao modificar a definição do meu PS1, eu vi que os marcadores "\ [" e "\" "deveriam ser adicionados para ajudar o bash a calcular o comprimento correto da tela. Muitos exemplos na web não os utilizam nem mencionam.

Eu procurei por uma solução para adicioná-los automaticamente, como com sed, mas não encontrei nenhum exemplo.

Eles ainda são necessários e há uma recomendação para não usar sed para definir o PS1?

Isso é o que eu uso no momento:

PS1="$(echo -n "$PS_" | sed -e 's/\\e\[/\\\[\\e\[/g' -e 's/[0-9]m/&\\\]/g')"
PRouleau
fonte

Respostas:

0

Sim, \[ e \] ainda são necessários, caso contrário, você terá falhas feias quando o comando for maior que a sua janela de terminal.

grawity
fonte
Isso é o que eu li para os caracteres de escape, mas e quanto ao uso de sed para definir o PS1?
PRouleau
A coisa é, nem todos terminam com um 'm' ... Se você usar as fugas apenas para formatação, está tudo bem - é o seu bashrc, faça o que quiser. Mas não é um caminho muito limpo. Muitos outros usuários fazem variáveis ​​como red='\[\e[31m\]' e depois ter PS1="${red}\u${norm} ..." Legal e Limpo.
grawity
Wheel, eu também uso variáveis ​​para manter a definição mais fácil de ler, mas todos os arquivos .bash_color que eu vi os definiram sem o "\ [\]". Então estou me perguntando. Obrigado pela ajuda.
PRouleau