Se você der uma olhada no padrão ANSI ASCII , a parte inferior do conjunto de caracteres (os 32 primeiros) são "caracteres de controle" reservados (às vezes chamados de "seqüências de escape"). São coisas como o caractere NUL, Alimentação vitalícia, Retorno de carro, Guia, Campainha, etc. A grande maioria pode ser emulada pressionando a Ctrltecla em combinação com outra tecla.
A \033
sequência 27 (decimal) ou octal ou 0x1b
hexadecimal é a sequência Escape. São todas representações da mesma sequência de controle. Diferentes tipos de conchas, idiomas e ferramentas se referem a essa sequência de diferentes maneiras. Sua Ctrlsequência é Ctrl- [, portanto, às vezes, é representada como ^[
, ^
sendo uma mão curta para Ctrl.
Você pode inserir seqüências de caracteres de controle como sequências brutas em sua linha de comando, prosseguindo com Ctrl- v. Ctrl- vpara a maioria das conchas e programas interrompe a interpretação da seguinte sequência de teclas e, em vez disso, é inserida em sua forma bruta. Se você fizer isso com a Escapetecla ou Ctrl- v, será exibido na maioria dos shells como ^[
. No entanto, embora essa sequência seja interpretada, ela não será recortada e colada facilmente e poderá ser reduzida a uma sequência de caracteres não de controle quando encontrada por determinados protocolos ou programas.
Para contornar isso para facilitar o uso, certos utilitários representam a sequência "bruta" com \033
(por referência octal), referência hexadecimal \x1b
ou por referência de caractere especial \e
. É o mesmo da maneira que \t
é interpretada como uma Tab- que, a propósito, também pode ser inserida por Ctrl- i, ou \n
como nova linha ou Entertecla, que também pode ser inserida por Ctrl- m.
Então, quando Gilles diz:
27 = 033 = 0x1b = ^ [= \ e
Ele está dizendo ASCII decimal 27, octal 33, hex 1b, Ctrl- [e \e
todos são iguais, ele quer dizer que todos se referem à mesma coisa (semanticamente).
Quando Demizey diz
^ [é apenas uma representação de ESCAPE e \ e é interpretado como um caractere ESCAPE real
Ele significa semanticamente, mas se você pressionar Ctrl- v Ctrl- [este é exatamente o mesmo que \e
, a sequência inserida crua provavelmente será tratado da mesma maneira, mas isso nem sempre é garantido, e por isso recomenda-se usar a programação mais portátil \e
ou 0x1b
ou \033
dependendo no idioma / shell / utilitário que está sendo usado.