
Por ejemplo, si quiero el prefijo para verde negrita, podría usar Green=$(tput bold; tput setaf 2)
. Esto establecería $Green en "\E[1m\E[32m". Pero en una terminal Ansi, fácilmente podría haber sido "\E[1;32m".
¿Se puede hacer esto con tput o estoy pidiendo demasiado?
Respuesta1
No, tput no hará esto (normalmente) porque es probable que use solo las capacidades de terminal estándar/predefinidas, que no tienen esa combinación.
Con ncurses, podrías definir tu propia descripción de terminal con una capacidad definida por el usuario, y tput funcionaría con eso.
Algo como esto combinaría colores:
infocmp -x >foo
printf '\tfgbg=\\E[3%p1%;4%p2%dm,\n' >>foo
sudo tic -x foo
Entonces (el ejemplo es para 8 colores)
tput fgbg 4 0
establecería el primer plano en azul y el fondo en negro. Sin embargo, hay muchas posibilidades. Usar las capacidades predefinidas implica menos esfuerzo.
Respuesta2
Otra forma de ver esto es que saber queincluso puedecombinar secuencias de control de esta manera es algo específico de la familia de terminales, que no es el modelo termcap/terminfo. Mientras que el modelo ECMA-48 de 44 años para secuencias de control está muy extendido hoy en día, termcap/terminfo están diseñados para permitir tipos de terminales que no se adhieren a él. En realidad, no siempre se pueden combinar secuencias de control de esta manera.