Если вы посмотрите на стандарт ANSI ASCII , нижняя часть набора символов (первые 32) - это зарезервированные «управляющие символы» (иногда их называют «escape-последовательностями»). Это такие вещи, как NUL-символ, Life Feed, Carriage Return, Tab, Bell и т. Д. Подавляющее большинство может быть воспроизведено нажатием Ctrlклавиши в сочетании с другой клавишей.
27-я (десятичная) или \033восьмеричная последовательность, или 0x1bшестнадцатеричная последовательность - это последовательность Escape. Все они представляют одну и ту же последовательность управления. Различные оболочки, языки и инструменты относятся к этой последовательности по-разному. Его Ctrlпоследовательность Ctrl- [, следовательно , иногда быть представлена в виде ^[, ^будучи короткую руку за Ctrl.
Вы можете вводить последовательности управляющих символов в виде необработанных последовательностей в командной строке, продолжая их с Ctrl- v. Ctrl- vбольшинству оболочек и программ прекращает интерпретацию следующей последовательности клавиш и вместо этого вставляет ее в необработанном виде. Если вы сделаете это с помощью Escapeклавиши или Ctrl- vона будет отображаться на большинстве оболочек как ^[. Однако, хотя эта последовательность будет интерпретироваться, она не будет легко вырезаться и вставляться и может быть уменьшена до последовательности неконтролирующих символов, когда встречаются в определенных протоколах или программах.
Чтобы обойти это, чтобы упростить использование, некоторые утилиты представляют «необработанную» последовательность с помощью \033(восьмеричной), шестнадцатеричной \x1bили специальной символьной ссылки \e. Это во многом аналогично тому, что \tинтерпретируется как Tab- который, кстати, также можно вводить через Ctrl- i, или \nкак перевод строки или Enterклавиша, которую также можно вводить через Ctrl- m.
Поэтому, когда Жиль говорит:
27 = 033 = 0x1b = ^ [= \ e
Он говорит, что десятичное ASCII 27, восьмеричное 33, шестнадцатеричное 1b, Ctrl- [и \eвсе они равны, он означает, что они все относятся к одному и тому же (семантически).
Когда Демизей говорит
^ [это просто представление ESCAPE и \ e интерпретируется как фактический символ ESCAPE
Он имеет в виду семантически, но если вы нажмете Ctrl- v Ctrl- [это точно так же, как \eнеобработанная вставленная последовательность, скорее всего, будет обрабатываться так же, но это не всегда гарантируется, и поэтому рекомендуется использовать программно более переносимым \eили 0x1bили в \033зависимости на используемом языке / оболочке / утилите.