Essa pergunta é na verdade várias perguntas, e "caracteres de controle" aborda apenas uma pequena parte dela, por exemplo, a barra de progresso para curl
. De maneira mais geral, esses são recursos comuns dos terminais (e emuladores de terminal).
A maioria desses recursos comuns é padronizada no ECMA-48: Funções de controle para conjuntos de caracteres codificados . No entanto, outros recursos não são . Eles são definidos pela implementação.
O ECMA-48 refere-se às funções de controle . Isso inclui caracteres de controle e seqüências de controle (geralmente chamadas de seqüências de escape, sequências ANSI, etc.).
Alguns caracteres de controle são usados para operações simples , por exemplo,
- mova o cursor para a coluna anterior na mesma linha
- mova o cursor para a primeira coluna na mesma linha
- mova o cursor para a próxima tabulação na mesma linha
- mova o cursor para a próxima linha (e role a tela se já estiver na última linha)
A barra de progresso para curl
é construída usando essas operações simples. Mas os personagens de controle podem fazer muito, não mais. Seqüências de controle fazem mais, por exemplo,
- mova o cursor para qualquer linha / coluna na tela
- mova o cursor para qualquer linha da mesma coluna na tela
- mova o cursor para qualquer coluna na mesma linha da tela
- definir paradas de tabulação em qualquer coluna na tela
- mova o cursor para a linha anterior
- faça a tela rolar para cima ou para baixo sem mover o cursor
Tanta coisa para paralelos entre simples / complexo. As seqüências de controle também são usadas para alterar a cor do texto e do plano de fundo, apagar o texto da tela, mostrar o texto em vídeo reverso (ou negrito, sublinhado, piscar).
Programas que desenham uma barra de progresso de vídeo reverso (ou colorido) usam seqüências de controle .
Embora as seqüências de controle possam fazer mais, elas podem fazer apenas coisas específicas. Juntá-los para criar editores de texto, telas de instalação (e programas que desenham barras de progresso coloridas) fica complicado. Parte disso é simplificada usando bibliotecas que conhecem essas coisas. Inicialmente, tínhamos termcap (e um banco de dados de algumas centenas de tipos de terminal), estendido para terminfo (e um banco de dados de cerca de mil tipos de terminal).
Mesmo com a padronização, existem dezenas de descrições de terminal que você pode usar . Portanto, continuamos a usar bibliotecas para todos, exceto o mais trivial desses aplicativos. Um é ncurses ("novas maldições"), outro é uma gíria (tecnicamente "S-Lang").
Leitura adicional:
ncurses
.