As sequências de escape para isso podem ser específicas do terminal. Esse é o objetivo de usar tput
. tputs procura a sequência de escape correta em um banco de dados com base no valor da variável $TERM
.
No meu terminal:
$ tput smso | sed -n l
3[3m$
$ tput rmso | sed -n l
3[23m$
Então eu pude fazer:
$ printf '3[3m%s3[23m\n' "stand out"
Mas não posso ter certeza de que funcionaria em outros terminais.
Se você não quiser chamar tput
a cada vez, pode executá-lo uma vez e armazenar a saída:
smso=$(tput smso) rmso=$(tput rmso)
printf '%s\n' "${smso}stand out${rmso}"
Note que smso
é "Start Mode Stand-Out", não é para vídeo reverso, embora muitos terminais usem vídeo reverso para destacar o texto. Se você quiser vídeo reverso, é tput rev
(cancelado por tput sgr0
), se você quiser definir a cor de fundo, use tput setab 4
para códigos de cores ANSI (sendo 4 o número ANSI de cor azul).