El comando tputtiene dos opciones diferentes para configurar el color setfy setaf, sin embargo, ambas parecen funcionar bien en mi computadora:
$ tput setf 2 && echo 'Hello world!'
$ tput setaf 2 && echo 'Hello world!'
Parece haber una dualidad similar con setby setab.
¿Cuál es la diferencia entre las dos opciones?

terminfo(5)página del manual que viene conncursespara más detalles.Respuestas:
setfestá limitado a solo 8 colores.setafPuede configurar hasta 256 colores.(toda la siguiente información será específica de urxvt, ya que es mi terminal, pero la información será similar, si no la misma, que otras terminales)
Ambos
setfysetafproporcionan un código de escape diferente. Puede ver esto en lo siguiente:Desde mi
urxvt(7)página de manual:Por lo tanto, a partir del
xxdresultado anterior , podemos ver quetput setf 2usa elPm = 32, que establecerá el color en verde.tput setaf 2por otro lado usaPm = 38;5, que representa el código de color definido en ISO 8613-6 (también verde).En ISO 8613-6, los colores 0x00-0x07 son los mismos que los colores estándar, y 0x08 - 0x0f son los colores estándar "negrita". Una vez que llegue a 0x10-0xff obtendrá nuevos colores.
Robado de wikipedia :
fuente
tputSin embargo, no parece utilizar realmente los rangos de secuencia de colores ANSI disponibles. Para cualquieran > 7,tput setaf nno tiene ningún efecto en el texto en mi terminal.tput setf 2ytput setaf 2son ambas.[32m.Del manual:
man 5 terminfoEntonces la respuesta es: setaf significa Establecer primer plano ANSI , es decir, usar secuencias de escape ANSI, y setf significa Establecer primer plano (usando algunas secuencias de escape distintas de ANSI).
fuente
Los dos conjuntos de capacidades utilizan un orden diferente para el rojo / azul en la lista de colores ANSI.
Como se señaló, se explica en la página del manual de ncurses terminfo . Algo de historia:
setf/setb.Sf/Sbcódigos correspondientes en lugar desetaf/setab(yAF/ABpara termcap), pero usando las secuencias de escape ANSI (que funcionan con termcap) en lugar de usar las capacidades correctas con las capacidades ANSI.Los ANSI
setaf/setabse agregaron bastante tarde en la historia de terminfo, como se puede deducir de su posición en la lista de cadenas de capacidades . Tenga en cuenta que se agregaron por etapas durante algunos años, y algunos sistemas difirieron (ncurses tiene algunos ejemplos comoCaps.hpuxpermitir que se compile para que coincida con esos sistemas). Eso explica el pequeño número de descripciones de terminales útiles que podrían usarse como referencia.Con todo eso,
setf/setbno se notó de inmediato el hecho de que las cadenas existentes no coincidían con el orden ANSI, lo que condujo a algunas correcciones en 1998 , y las preguntas frecuentes ¿Por qué se intercambian rojo / azul? .Si bien fue posible extender la secuencia ANSI de 8 colores a 16 colores (suponiendo que los colores 8-15 fueran versiones más brillantes de 0-7), no había una buena razón para inventar un esquema que se extendiera más
setf/setballá de los primeros 16 colores.fuente