
Por exemplo, se eu quiser o prefixo verde em negrito, posso fazer Green=$(tput bold; tput setaf 2)
. Isso definiria $Green como "\E[1m\E[32m". Mas em um terminal Ansi, poderia facilmente ter sido "\E[1;32m".
Isso pode ser feito com tput ou estou pedindo demais?
Responder1
Não, tput não fará isso (normalmente) porque é provável que você use apenas os recursos de terminal predefinidos/padrão, que não possuem essa combinação.
Com ncurses, você poderia definir sua própria descrição de terminal com um recurso definido pelo usuário, e tput funcionaria com isso.
Algo assim combinaria cores:
infocmp -x >foo
printf '\tfgbg=\\E[3%p1%;4%p2%dm,\n' >>foo
sudo tic -x foo
Então (o exemplo é para 8 cores)
tput fgbg 4 0
definiria o primeiro plano como azul e o fundo como preto. No entanto, existem muitas possibilidades. Usar os recursos predefinidos envolve menos esforço.
Responder2
Outra maneira de ver isso é saber que vocêaté podecombinar sequências de controle dessa maneira é algo específico da família de terminais, que não é o modelo termcap/terminfo. Embora o modelo ECMA-48 de 44 anos para sequências de controle seja difundido hoje em dia, termcap/terminfo são projetados para permitir tipos de terminais que não aderem a ele. Não é verdade que sempre se possa combinar sequências de controle dessa maneira.