Se você der uma olhada no padrão ANSI ASCII , a parte inferior do conjunto de caracteres (os primeiros 32) são reservados "caracteres de controle" (às vezes chamados de "seqüências de escape"). Estas são coisas como o caractere NUL, Life Feed, Carriage Return, Tab, Bell, etc. A grande maioria pode ser emulada pressionando a tecla Ctrl em combinação com outra tecla.
A 27ª (decimal) ou 3
octal sequência, ou 0x1b
sequência hex é a sequência Escape. Todas são representações da mesma sequência de controle. Conchas, linguagens e ferramentas diferentes referem-se a essa sequência de maneiras diferentes. Sua Ctrl seqüência é Ctrl - [, portanto, às vezes sendo representada como ^[
, ^
sendo um ponteiro curto para Ctrl .
Você pode inserir sequências de caracteres de controle como sequências brutas em sua linha de comando, procedendo-as com Ctrl - v . Ctrl - v para a maioria das shells e programas para a interpretação da seguinte sequência de teclas e, em vez disso, insere em sua forma bruta. Se você fizer isso com a tecla Escape ou Ctrl - v ela será mostrada na maioria dos shells como ^[
. No entanto, embora essa sequência seja interpretada, ela não será cortada e colada facilmente e poderá ser reduzida a uma sequência de caracteres sem controle quando for encontrada por certos protocolos ou programas.
Para contornar isso para facilitar o uso, alguns utilitários representam a sequência "bruta" com 3
(por referência octal), referência hexa \x1b
ou referência de caracteres especiais \e
. Isto é praticamente o mesmo no modo em que \t
é interpretado como um Tab - que por sinal também pode ser inserido via Ctrl - i , ou \n
como nova linha ou a tecla Enter , que também pode ser inserida através de Ctrl - m .
Então, quando Gilles diz:
27 = 033 = 0x1b = ^[ = \e
Ele está dizendo decimal ASCII 27, octal 33, hex 1b, Ctrl - [ e \e
são
tudo igual ele significa que todos se referem à mesma coisa (semanticamente).
Quando Demizey diz
^[ is just a representation of ESCAPE and \e is interpreted as an actual ESCAPE character
Ele significa semanticamente, mas se você pressionar Ctrl - v Ctrl - [ isto é exatamente o mesmo como \e
, a sequência inserida em bruto provavelmente será tratada da mesma maneira, mas isso nem sempre é garantido e, portanto, recomenda-se usar o programaticamente mais portátil \e
ou 0x1b
ou 3
dependendo do idioma / shell / utilitário sendo usado.