O que significa uma sequência '\ 033 [999D' e onde ela é explicada?

19

Eu me deparei com seqüências bash como 3[999D e 3[2K\r que são usadas para fazer alguma manipulação em uma impressão em um terminal. Mas o que essas seqüências significam? Onde posso encontrar uma lista / resumo na web para me ajudar a descobrir o significado dessas sequências?

    
por Alex 21.02.2014 / 10:23

4 respostas

32

Veja este link link . Como Anthon diz, 3 é o código octal do estilo C para um caractere de escape. O [999D move o cursor de volta 999 colunas, presumivelmente uma forma de força bruta de chegar ao início da linha. [2K apaga a linha atual. \r é um retorno de carro que moverá o cursor de volta ao início da linha atual e será uma seqüência de escape no estilo C em vez de uma sequência de controle do terminal.

Atualizar

Como outras pessoas apontaram, essas sequências de controle não são nada a fazer bash em si, mas sim o dispositivo terminal / emulador em que o texto aparece. Era uma vez comum que essas sequências fossem interpretadas por um hardware completamente diferente. Originalmente, cada um responderia a conjuntos de códigos completamente diferentes. Para lidar com isso, as bibliotecas termcap e terminfo foram usadas para escrever códigos compatíveis com vários terminais. O comando tput é uma interface para a biblioteca terminfo (o termcap support também pode ser compilado) e é uma maneira mais robusta de criar sequências compatíveis.

Dito isto, há também o ANSI X3.64 ou o ECMA-48 padrão. Qualquer implementação de terminal moderna usará isso. terminfo e termcap ainda são relevantes, pois a implementação pode estar incompleta ou incluir extensões não padrão, no entanto, para a maioria das finalidades, é seguro assumir que sequências ANSI comuns funcionarão.

A xterm FAQ fornece algumas informações interessantes sobre as diferenças entre os emuladores de terminal modernos (muitos tentam para emular xterm em si) e como xterm de sequências se relacionam com os terminais VT100 mencionados no link acima. Ele também fornece uma lista definitiva de xterm seqüências de controle .

Também é comumente usado, é claro, o console Linux, uma lista definitiva de seqüências de controle para ele pode ser encontrada em man console_codes , junto com uma comparação com xterm .

    
por 21.02.2014 / 10:35
5

O 3 é o caractere de escape, e essas sequências não são bash específicas, mas interpretadas pelo terminal (software ou hardware (via rede ou linha serial)) nas quais o programa (bash) é executado. Existem muitas sequências .

O que cada um faz depende do terminal do qual ele depende e também pode depender de qualquer sequência anterior que altere o estado do terminal.

Eles costumam ser usados para definir cores no prompt do bash , mas não encontrei seus exemplos específicos essa página.

    
por 21.02.2014 / 10:31
3

'\ 033 [999D' é engraçado. Alguns terminais implementam menos seqüências de escape, portanto, isso pode ser necessário se nenhum de '\ 033 [1G', '\ 033 [1; 1H', '\ 033 [1; 1f' ou '\ r' se comporta como deveria, mas quem usa uma exibição de texto de mil colunas? Estas sequências têm uma página man no Linux: console_codes (4) . bjh21 tem uma lista detalhada de todos os códigos . Dependendo de qual programa analisa '\ 033', a substituição mais clara '\ e' pode estar disponível.

Realmente não é pretendido que estes sejam usados diretamente - a maneira correta de emitir comandos de controle de terminal é com uma camada de abstração como ncurses - mas eles funcionam tão bem quanto literais de string.

    
por 21.02.2014 / 12:45
0

você pode procurar por "033 termo lista de escape" ou " 033 tput " e veja link para mais informações antes de alguém responder;]

    
por 21.02.2014 / 10:39

Tags