realce de texto no shell

2

Eu sempre usei o método abaixo para destacar o plano de fundo do texto no shell.

tput smso;printf " TEXT ";tput rmso;

Como posso conseguir a mesma coisa sem usar tput (quero dizer, alguma forma de formatação como \e[0m para cores no printf)?

    
por g4ur4v 23.07.2013 / 10:52

1 resposta

3

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).

    
por 23.07.2013 / 14:36