Если вы посмотрите на стандарт 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
зависимости на используемом языке / оболочке / утилите.