GNU/Linux >> Tutoriales Linux >  >> Linux

¿Beneficio objetivo de las secuencias de escape sobre Tput?

En el ‘.*rc de las personas ‘ archivos que veo en línea o en varios códigos, tiendo a ver a muchas personas que usan manualmente secuencias de escape ANSI en lugar de usar tput .

Tuve el entendimiento de que tput es más universal/seguro, por lo que me pregunto:

¿Hay alguna razón objetiva para usar secuencias de escape en lugar de tput? ? (Portabilidad, robustez ante errores, terminales inusuales…?)

Respuesta aceptada:

tput puede manejar expresiones (por ejemplo en sgr y setaf ) que el shell-scripter típico encontraría menos que utilizable. Para tener una idea de lo que está involucrado, vea el resultado de infocmp con el -f (formato) opción aplicada. Este es uno de los ejemplos que usan esas cadenas de las descripciones terminfo de xterm:

xterm-16color|xterm with 16 colors,
        colors#16,
        pairs#256,
        setab=E[
                %?
                        %p1%{8}%<
                        %t%p1%{40}%+
                %e
                        %p1%{92}%+
                %;%dm,
        setaf=E[
                %?
                        %p1%{8}%<
                        %t%p1%{30}%+
                %e
                        %p1%{82}%+
                %;%dm,
        setb=
                %p1%{8}%/%{6}%*%{4}%+E[%d%p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m,
        setf=
                %p1%{8}%/%{6}%*%{3}%+E[%d%p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m,
        use=xterm+256color,
        use=xterm-new,

El formato divide las cosas:un guión o programa para hacer lo mismo tendría que seguir esos giros y vueltas. La mayoría de las personas se dan por vencidas y solo usan las cadenas más fáciles.

La característica de 16 colores se tomó prestada de IBM aixterm, que mapea 16 códigos cada uno para el primer plano y el fondo en dos rangos;

  • primer plano en 30-37 y 90-97
  • fondo en 40-47 y 100-107

Un guión sencillo

#!/bin/sh
TERM=xterm-16color
export TERM
printf '    %12s %12sn' Foreground Background
for n in $(seq 0 15)
do
    F=$(tput setaf $n | cat -v)
    B=$(tput setab $n | cat -v)
    printf '%2d  %12s %12sn' $n "$F" "$B"
done

y la salida muestra cómo funciona:

      Foreground   Background
 0        ^[[30m       ^[[40m
 1        ^[[31m       ^[[41m
 2        ^[[32m       ^[[42m
 3        ^[[33m       ^[[43m
 4        ^[[34m       ^[[44m
 5        ^[[35m       ^[[45m
 6        ^[[36m       ^[[46m
 7        ^[[37m       ^[[47m
 8        ^[[90m      ^[[100m
 9        ^[[91m      ^[[101m
10        ^[[92m      ^[[102m
11        ^[[93m      ^[[103m
12        ^[[94m      ^[[104m
13        ^[[95m      ^[[105m
14        ^[[96m      ^[[106m
15        ^[[97m      ^[[107m

Los números están divididos porque aixterm usa los rangos 30-37 y 40-47 para hacer coincidir los colores ECMA-48 (también conocido como "ANSI") y usa el rango 90-107 para los códigos no definido en el estándar.

Aquí hay una captura de pantalla con xterm usando TERM=xterm-16color , donde puedes ver el efecto.

Relacionado:Learn English – ¿Palabra para algo que está cargado emocionalmente de una manera que reduce las posibilidades de abordar el tema desde un punto de vista objetivo?

Lectura adicional:

  • infocmp comparar o imprimir descripciones terminfo
  • tput , reset inicializar un terminal o consultar la base de datos terminfo
  • ECMA-48:Funciones de control para conjuntos de caracteres codificados
  • aixterm Comando
  • ¿Los colores brillantes no son lo mismo que los llamativos? (Preguntas frecuentes sobre XTerm)

Linux
  1. ¿Cómo escapar de las comillas en Shell?

  2. Ssh – ¿Redirigir Stdout sobre Ssh?

  3. ¿Quitar barra invertida + secuencias de nueva línea?

  4. ¿Oring con True en un comando sobre Ssh?

  5. ¿Cómo recorrer directorios en Linux?

¿Colores en las páginas man?

¿Están definidas en algún lugar las secuencias de escape de color terminal para Bash?

¿Btrfs sobre mdadm raid6?

¿Cuál es el beneficio de /etc/apt/sources.list.d sobre /etc/apt/sources.list?

Las secuencias de escape repetidas no se interpretan en Linux tty

¡Cómo escapar! en contraseña?