Algumas teclas do teclado não correspondem a caracteres reais. Por exemplo, Acorresponde ao caractere, amas as teclas Upe F1não têm seus próprios caracteres dedicados. Quando essas teclas especiais são pressionadas, em vez de obter um único caractere correspondente à tecla, o terminal converte o pressionamento de tecla em uma sequência especial de vários caracteres que normalmente começam com o caractere de escape (geralmente exibido como ^[). Por exemplo, Upgeralmente gera a sequência ^[[A(são 3 caracteres de uma tecla: escape [, e A).
O motivo pelo qual você normalmente não vê ^[[Aé porque a maioria dos aplicativos de console é inteligente o suficiente para converter as seqüências especiais em comandos úteis, em vez de apenas repeti-las no console. Para fazer isso, eles desligam o eco interno do terminal e fazem seu próprio processamento de nível inferior. Por exemplo, quando bashvê ^[[A, real percebe que significa que você pressionou Upe, em vez de ^[[Avoltar, faz um monte de coisas para excluir o que você digitou até agora, buscar o comando anterior salvo no histórico e imprimi-lo.
Se você vir ^[[Apressionando Up, isso normalmente significa que o eco do terminal está ativado e o processo em primeiro plano (aquele que está no controle do terminal) não está executando nenhum dos processos especiais mencionados acima. Isso pode ocorrer porque o aplicativo simplesmente ignora o terminal (como a maioria dos comandos não interativos). Observe que, normalmente, o shell coloca o terminal no modo canônico e ativa o eco antes de executar um processo em primeiro plano, e restaura suas próprias configurações assim que recupera o controle do terminal após a saída do comando.
O eco parece bastante inofensivo. Lembre-se de que, se o comando em execução não for lido no terminal, os caracteres que você gerou através do teclado provavelmente terminarão na bashfila de entrada, portanto, tenha cuidado com o que você digita, pois provavelmente serão interpretados como comandos normais, uma vez que bashretomam a leitura do terminal.
Actually Na verdade, isso é uma simplificação excessiva. Como a sequência específica pode variar de acordo com o tipo de terminal, normalmente existem várias camadas de bibliotecas de abstração entre um aplicativo de console e o próprio terminal. Por exemplo, bashusa a readlinebiblioteca para fazer a maior parte de sua entrada.