Caret colchete quadrado A ^ [[A - O que significa?

13

Desculpas se isso já foi perguntado, mas eu não tenho ideia de como eu mesmo posso descobrir isso - quando eu procuro por "^ [[A" em qualquer mecanismo de busca ele ignora a "^ [[" parte completamente.

De qualquer forma, minha pergunta: Às vezes, no terminal (no Mac), quando pressiono as teclas de seta, os caracteres "^ [[A", "^ [[B", "^ [[C" ou "^ [[ D "aparece. Eu me lembro de ter me deparado com esses anos atrás quando eu usei (muito provavelmente) o DOS e também acho que ocorreu com mais frequência também.

Por que isso acontece e o que eles querem dizer?

    
por Phill 13.08.2015 / 03:02

1 resposta

20

Estes são códigos de escape ANSI . O ^[ representa um caractere ESC (escape), o próximo [ é um colchete esquerdo real e a letra indica a função do código de escape. A parte Esc [ é chamada de CSI (Control Sequence Introducer). Portanto, a seqüência CSI A significa seta para cima ou CUU (CUrsor Up).

De qualquer forma, este esquema remonta à época do terminal de exibição VT100 (lançado em 1978). Algumas das seqüências de escape usadas pelo VT100 foram padronizadas pelo ANSI no início dos anos 80 e permaneceram em uso comum desde então.

Normalmente, quando você aperta as teclas de seta, algum programa (digamos, o shell) está escutando e pode atuar sobre eles. Então, quando você clica na seta para cima, ela volta ao histórico de comandos. No entanto, se um programa em execução que não entender as seqüências de escape para as teclas de seta, elas geralmente acabam sendo ecoadas de volta para o terminal como qualquer outra tecla que você possa atingir. É por isso que às vezes você vê ^[[A se acertar a tecla de seta para cima.

    
por 13.08.2015 / 03:22