
Escribo:
$ infocmp -1 xterm ... colores #8, negrita=\E[1m, parpadeo=\E[5m, ... $ tput -Txterm colores && echo OK || eco errar 8 DE ACUERDO $ tput -Txterm parpadea && echo OK || eco errar ^[[5mOK
Entonces puedo usarponerpara comprobar las capacidades retminales.
¿Es esta solución portátil? ¿Hay alguna otra solución?
O tal vez pueda quedarme con la solución:
$ [ $TERM = xterm ] && eco ok || eco errar OK
Un uso es configurar PS1 en .bashrc. Otro para resaltar el resultado y llamar la atención del script sh. Puedo usar tal solución:
PS1='bash# ' caso "$TERM" en xterm*) PS1='\[\033[35m\]bash# \[\033[0m\]' ;; esac
que usa solo el comando integrado de bash (muy eficiente) y funciona en todos mis casos, pero desafortunadamente no es portátil.
Respuesta1
El uso tput
es portátil para una gran cantidad de sistemas operativos.
Sin embargo, verificar el código de retorno solo le indica si la base de datos terminfo de la plataforma tiene una definición de esa capacidad en su entrada para 'xterm'.
El código de retorno no le indica si el cliente 'xterm' utilizado actualmente realmente admite esa capacidad.
Tenga en cuenta que existe una gran variedad de programas de software que afirman sercompatible con 'xterm'. Ciertamente es probable que no todos admitan todas las características de 'xterm', especialmente considerando que se han lanzado varias versiones consecutivas de la implementación de referencia de xterm y probablemente algunas bifurcaciones. El responsable de xterm dice "Ninguno implementa hasta la mitad de los controles de xterm".
Hasta donde yo sé, ninguno de los organismos de normalización habituales (ANSI, ECMA, The Open Group) ha publicado un estándar que defina xterm. El actual mantenedor de xterm también mantiene unprograma de prueba vt100 (vttest)para ayudarle con su trabajo xterm.
Por lo tanto, probablemente no haya forma de que una aplicación en sí misma pueda hacer uso del valor TERM para asegurarse de que un terminal que se dice que es un xterm realmente admite una característica específica de xterm. Al menos no para cualquier elección arbitraria de función xterm. Si involucras a un humano (como recuerdo que hizo vttest), es posible que tengas más posibilidades.
Respuesta2
Sí, es portátil. Qué tal esto:
# BASH : Configure things differently if current terminal has >= 8 colors.
if which tput > /dev/null 2>&1 && [[ $(tput -T$TERM colors) -ge 8 ]]; then
echo "Configure stuff to use colors here!"
else
echo "No tput or less than 8 colors, default to no coloring"
fi