Linhas de sobreposição de cores do Linux bash

0

Problema

Eu tenho um script ps1 e está funcionando bem (eu m usando \[$(tput setaf x)\] ). Mas quando eu uso um printf com cores eu tenho 2 cenários:

linha sobreposta

printf $(tput setaf 2)HI!$(tput sgr0)

Que imprime HI! em verde, mas quebra a embalagem

imprimindo \ [\]

printf \[$(tput setaf 2)\]HI!\[$(tput sgr0)\]

Que imprime \[\]HI!\[\]

Nota

Eu também tentei usar echo sem sucesso

    
por Seiji Hirao 22.02.2017 / 16:29

1 resposta

0

A solução que encontrei foi mudar meu ps1 de:

RESET="\[$(tput sgr0)\]"
GREEN="\[$(tput setaf 2)\]"

export PS1="${GREEN} MY PS1 ${RESET}"

Para:

RESET="$(tput sgr0)"
GREEN="$(tput setaf 2)"

export PS1="\[${GREEN}\] MY PS1 \[${RESET}\]"

Quanto ao que aconteceu nos bastidores, ainda não sei: (

    
por 24.02.2017 / 00:38