Esa pregunta es en realidad varias preguntas, y los "caracteres de control" abordan solo una pequeña parte de ella, por ejemplo, la barra de progreso para curl
. En términos más generales, estas son características comunes de los terminales (y emuladores de terminal).
La mayoría de estas características comunes están estandarizadas en ECMA-48: Funciones de control para juegos de caracteres codificados . Sin embargo, otras características no lo son . Están definidos por la implementación.
ECMA-48 se refiere a funciones de control . Eso incluye caracteres de control y secuencias de control (a menudo denominadas secuencias de escape, secuencias ANSI, etc.).
Algunos caracteres de control se utilizan para operaciones simples , por ejemplo,
- mover el cursor a la columna anterior en la misma fila
- mover el cursor a la primera columna en la misma fila
- mueve el cursor a la siguiente pestaña en la misma fila
- mueva el cursor a la siguiente fila (y desplace la pantalla si ya está en la última fila)
La barra de progreso para curl
se construye utilizando estas operaciones simples. Pero los personajes de control solo pueden hacer mucho, no más. Las secuencias de control hacen más, por ejemplo,
- mueve el cursor a cualquier fila / columna en la pantalla
- mover el cursor a cualquier fila en la misma columna en la pantalla
- mueva el cursor a cualquier columna en la misma fila en la pantalla
- establecer tabulaciones en cualquier columna de la pantalla
- mover el cursor a la línea anterior
- hacer que la pantalla se desplace hacia arriba o hacia abajo sin mover el cursor
Esto en cuanto a paralelos entre simple / complejo. Las secuencias de control también se usan para cambiar el color del texto y el fondo, borrar texto de la pantalla, mostrar texto en video inverso (o negrita, subrayado, parpadeo).
Los programas que dibujan una barra de progreso de video inverso (o de color) usan secuencias de control .
Aunque las secuencias de control pueden hacer más, solo pueden hacer cosas específicas. Ponerlos juntos para hacer editores de texto, pantallas de instalación (y programas que dibujan barras de progreso de colores) se complica. Algo de eso se simplifica mediante el uso de bibliotecas que conocen estas cosas. Inicialmente, teníamos un termcap (y una base de datos de unos cientos de tipos de terminales), extendido a terminfo (y una base de datos de alrededor de mil tipos de terminales).
Incluso con la estandarización, hay docenas de descripciones de terminales que puede usar . Por lo tanto, seguimos utilizando bibliotecas para todas las aplicaciones menos las más triviales. Uno es ncurses ("nuevas maldiciones"), otro es argot (técnicamente "S-Lang").
Otras lecturas:
ncurses
.