O tput pode ser usado com recursos combinados?

O tput pode ser usado com recursos combinados?

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.

informação relacionada