Articulo de referencia

Capacidades del terminal

En informática y telecomunicaciones, las capacidades de un terminal son diversas funciones que van más allá de las de un teletipo convencional y que los sistemas anfitriones (y ...

En informática y telecomunicaciones, las capacidades de un terminal son diversas funciones que van más allá de las de un teletipo convencional y que los sistemas anfitriones (y los programas que se ejecutan en ellos) pueden utilizar. Se trata (principalmente) de códigos de control y códigos de escape que se pueden enviar o recibir del terminal. Los códigos de escape enviados al terminal realizan diversas funciones que un terminal CRT (y los emuladores de terminal de software ) pueden realizar, pero que un teletipo no; como mover el cursor del terminal a posiciones en la pantalla, borrar y desplazar toda la pantalla o partes de ella, encender y apagar impresoras conectadas, programar teclas de función, cambiar los colores y atributos de la pantalla (como la reproducción inversa de vídeo ) y configurar las cadenas de título de la pantalla. Los códigos de escape recibidos del terminal representan acciones como pulsaciones de teclas de función , teclas de flecha y otras teclas especiales ( tecla Inicio , tecla Fin , tecla Ayuda , tecla AvPág , tecla RePág , tecla Insertar , tecla Suprimir , etc.) . [ 1 ] [ 2 ]

Unix y POSIX: termcap, terminfo, et al.

En Unix y otros sistemas compatibles con POSIX que admiten la interfaz de terminal POSIX , estas capacidades se codifican en bases de datos configuradas por un administrador del sistema y a las que se accede desde programas a través de la biblioteca terminfo (que reemplaza a la antigua biblioteca termcap ), sobre la cual se construyen bibliotecas como curses y ncurses , mediante las cuales los programas de aplicación utilizan las capacidades de la terminal para proporcionar interfaces de usuario textuales con ventanas, cuadros de diálogo, botones, etiquetas, campos de entrada, menús, etc. [ 3 ] [ 4 ] La intención es que esto permita que los programas de aplicación sean independientes de las características reales de la terminal. No necesitan incorporar códigos de control ni secuencias de escape en su código, por lo que no tienen problemas para usarse en una variedad de terminales con diversas capacidades. [ 5 ]

termcap

La biblioteca termcap (por " capacidades de capacidad de terminal " ) fue desarrollada para sistemas BSD. Utiliza una base de datos almacenada en el archivo /etc/termcap . Esta base de datos consta de una serie de registros (cada uno de los cuales consta de una o más líneas en el archivo, unidas por caracteres de barra invertida al final de cada línea que continúa en la siguiente) cada uno de los cuales representa las capacidades de una terminal en particular. Los campos del registro comprenden el nombre o nombres del tipo de terminal, seguidos de una secuencia de capacidades, separadas por dos puntos. [ 3 ] [ 2 ] Los campos de capacidad se dividen en tres grupos:

características del terminal
Estos incluyen aspectos como el número (nominal) de filas y columnas que tiene la pantalla del terminal, si la salida se ajusta automáticamente a la siguiente línea cuando llega al final de una línea, etc. [ 2 ]
secuencias de control enviadas como salida al terminal
Estos comprenden los códigos de control y las secuencias de escape que se envían al terminal para que realice alguna acción (no necesariamente una acción de visualización). Un ejemplo de uno de los más simples es la secuencia de salida para borrar la pantalla, que puede ser el carácter de salto de página (ASCII FF) en algunos tipos de terminal, pero puede ser, por ejemplo, la secuencia de escape en un terminal que requiere secuencias de escape ANSI . [ 6 ] [ 2 ]␛2J
secuencias de control enviadas como entrada por el terminal
Estos comprenden los códigos de control y las secuencias de escape que el terminal envía al host para representar diversas acciones y eventos, como la pulsación de teclas de función y teclas de flecha . [ 2 ]

terminfo

La biblioteca terminfo (" información de terminal ") se desarrolló para sistemas System V. Utiliza una base de datos almacenada en varios archivos dentro de un directorio, que puede ser (en diferentes sistemas Unice y compatibles con POSIX) /usr/lib/terminfo , /usr/share/terminfo o incluso /usr/share/lib/terminfo . [ 5 ] (Su ​​ubicación ni siquiera es uniforme en las diferentes distribuciones de Linux . [ 7 ] )

A diferencia de la base de datos termcap, la base de datos terminfo es compilada, una base de datos legible por máquina que se construye a partir de un formato de archivo fuente legible por humanos mediante un programa de utilidad, tic . Se pueden descompilar de forma legible por máquina a forma legible por humanos mediante otro programa de utilidad, infocmp . [ 8 ] El comando para generar la forma legible por humanos de la definición del terminal "vt100", por ejemplo, es: [ 7 ]

infocmp vt100 

El uso de un formato legible por máquina tenía como objetivo evitar la sobrecarga innecesaria, en programas de aplicación que utilizan sistemas como la biblioteca termcap, de analizar repetidamente el contenido de la base de datos para leer los campos de un registro. El uso de múltiples archivos tenía como objetivo evitar la sobrecarga similar de analizar el contenido de la base de datos para encontrar el registro de la base de datos para el tipo de terminal de destino. El índice de nombres de tipos de terminal es, en efecto, la estructura de directorios ordinaria del sistema de archivos Unix/POSIX. Originalmente, Unix tenía graves problemas de rendimiento con directorios grandes que contenían muchos archivos, por lo que terminfo utiliza una estructura de dos niveles, dividiendo las entradas del directorio por la primera letra en una serie de subdirectorios. Los formatos de sistema de archivos más recientes utilizados en sistemas Unix no sufren tanto de tales problemas (porque sus estructuras de directorios en disco ya no son simples matrices de entradas, sino que están organizadas en árboles o tablas hash) y, por lo tanto, la necesidad de este elemento de diseño, que todavía existe en las implementaciones modernas de terminfo, ha desaparecido. [ 8 ]

Programas de servicios públicos para ejercitar las capacidades terminales

En los sistemas Unix, el comando tput se utiliza para buscar una capacidad específica en la base de datos del sistema y mostrarla en la salida estándar del comando (que, presumiblemente, es la terminal en la que se realizará la función denotada por la capacidad). [ 1 ] Una de las operaciones más sencillas es borrar la pantalla. El nombre del campo de la base de datos que almacena la secuencia de salida para esto es clear , por lo que los argumentos del comando para el programa tput para borrar la pantalla son [ 1 ]

tput clear 

Otra operación consiste en inicializar o restablecer la terminal a un estado predeterminado conocido (de atributos de caracteres, fuentes, colores, etc.). Los comandos para esto son: [ 9 ]

tput init 

y

tput reset 

Normalmente, el comando tput utiliza el tipo de terminal especificado por la variable de entorno , una de las variables de entorno de control de la interfaz de terminal POSIX . Sin embargo, esto se puede anular para forzar a tput a buscar un tipo de terminal diferente en la base de datos, mediante una opción de línea de comandos. [ 1 ] Por ejemplo, para ejecutar la secuencia de reinicio apropiada para el tipo de terminal denominado "vt100" en la base de datos (normalmente un terminal DEC VT100 ), independientemente del tipo de terminal especificado en las variables de entorno, el comando es:TERM

tput -T vt100 reset 

Referencias

¿Qué apoya qué?

  1. 1 2 3 4 Afzal 2008 , pág. 419.
  2. ^ Frisch 2002 , pág . 770. 
  3. 1 2 Coffin 1991 , pág. 115.
  4. Coffin 1991 , pág. 372.
  5. 1 2 Frisch 2002 , pág. 769.
  6. Kumar 2004 , pág. 417.
  7. 1 2 Blum 2008 , pág. 31.
  8. 1 2 Raymond 2004 , págs .  144-145.
  9. Winsor 2001 , págs .  244-245.

Fuentes utilizadas

  • Afzal, Amir (2008). UNIX sin límites: una introducción (5.ª  ed.). Prentice Hall. ISBN 978-0-13-119449-6.
  • Blum, Richard (2008). Linux Command Line and Shell Scripting Bible . Bible Series. John Wiley and Sons. ISBN 978-0-470-25128-7.
  • Coffin, Stephen (1991). UNIX system V release 4: the complete reference . Osborne McGraw-Hill. ISBN 978-0-07-881653-6.
  • Frisch, Æleen (2002). Administración de sistemas esencial . Un manual conciso (3.ª  ed.). O'Reilly Media, Inc. ISBN 978-0-596-00343-2.
  • Kumar, Sudhir (2004). Enciclopedia de sistemas operativos . Anmol Publications PVT. LTD. ISBN 978-81-261-1792-5.
  • Raymond, Eric S. (2004). El arte de la programación Unix . Serie de informática profesional de Addison-Wesley. Addison-Wesley. ISBN 978-0-13-142901-7.
  • Winsor, Janice (2001). Guía avanzada del administrador de sistemas Solaris 8 (3.ª  ed.). Prentice Hall PTR. ISBN 978-0-13-027703-9.

Lecturas adicionales

  • Strang, John; Mui, Linda; O'Reilly, Tim (1991). Termcap y terminfo . Manual básico (3.ª  ed.). O'Reilly Media, Inc. ISBN 978-0-937175-22-4.