Jeśli spojrzysz na standard ANSI ASCII , dolna część zestawu znaków (pierwsze 32) są zarezerwowanymi „znakami kontrolnymi” (czasami nazywanymi „sekwencjami ucieczki”). Są to rzeczy takie jak znak NUL, Life Feed, Carriage Return, Tab, Bell, itp. Zdecydowaną większość można emulować, naciskając Ctrlklawisz w połączeniu z innym klawiszem.
Sekwencja 27 (dziesiętna) lub \033
ósemkowa lub 0x1b
szesnastkowa to sekwencja Escape. Wszystkie są reprezentacjami tej samej sekwencji kontrolnej. Różne powłoki, języki i narzędzia odnoszą się do tej sekwencji na różne sposoby. Jego Ctrlsekwencja jest Ctrl- [, a zatem czasem są reprezentowane ^[
, ^
są skróty dla Ctrl.
Możesz wprowadzić kontrolne sekwencje znaków jako nieprzetworzone sekwencje w linii poleceń, kontynuując je za pomocą Ctrl- v. Ctrl- vdla większości powłok i programów zatrzymuje interpretację następującej sekwencji klawiszy i zamiast tego wstawia ją w surowej postaci. Jeśli zrobisz to za pomocą Escapeklawisza lub Ctrl- vwyświetli się na większości powłok jako ^[
. Jednak chociaż sekwencja ta zostanie zinterpretowana, nie będzie łatwa do wycinania i wklejania, a może zostać zredukowana do niekontrolowanej sekwencji znaków, gdy napotka niektóre protokoły lub programy.
Aby obejść ten problem, aby ułatwić korzystanie z niego, niektóre narzędzia reprezentują sekwencję „surową” za pomocą \033
(poprzez odniesienie ósemkowe), odniesienie szesnastkowe \x1b
lub odniesienie do znaku specjalnego \e
. Jest to w podobny sposób \t
interpretowane jako Tab- które, nawiasem mówiąc, można również wprowadzać przez Ctrl- i, lub \n
jako znak nowej linii lub Enterklawisz, który można również wprowadzać przez Ctrl- m.
Więc kiedy Gilles mówi:
27 = 033 = 0x1b = ^ [= \ e
Mówi dziesiętny ASCII 27, ósemkowy 33, szesnastkowy 1b, Ctrl- [i \e
wszystkie są równe, co oznacza, że wszystkie odnoszą się do tej samej rzeczy (semantycznie).
Kiedy mówi Demizey
^ [jest tylko reprezentacją ESCAPE, a \ e jest interpretowane jako rzeczywisty znak ESCAPE
Oznacza on semantycznie, ale po naciśnięciu Ctrl- v Ctrl- [to jest dokładnie taka sama, jak \e
surowy włożona sekwencja najprawdopodobniej będzie traktowane w ten sam sposób, ale to nie zawsze jest zagwarantowane, i dlatego zaleca się stosowanie programowo bardziej przenośne \e
lub 0x1b
lub \033
w zależności od używanego języka / powłoki / narzędzia.