Различие между \e и ^ [

К сожалению, я не мог найти решение починить X-сервер и позволить мне использовать мышь. Я загрузил живой CD Debian KDE и моей мыши, и клавиатура работала, таким образом, это была конфигурация, которая была испорчена.

Я в конечном счете переустановил базовую операционную систему. У меня были свои данные (/home,/usr, и т.д.) в отдельных разделах, таким образом, я просто должен был переустановить /.

15
13.04.2017, 15:36
2 ответа

Если Вы смотрите на стандарт ASCII ANSI, более низкая часть набора символов (первые 32) резервируются "управляющие символы" (иногда называемый "escape-последовательностями"). Это вещи как символ NUL, Жизненный Канал, Возврат каретки, Вкладка, Звонок, и т.д. Подавляющее большинство может быть эмулировано путем нажатия клавиши Ctrl в сочетании с другим ключом.

27-е (десятичное число) или \033 восьмеричная последовательность, или 0x1b шестнадцатеричной последовательностью является Escape-последовательность. Они - все представления той же управляющей последовательности. Различные оболочки, языки и инструменты относятся к этой последовательности по-разному. Его последовательность Ctrl является Ctrl-[, следовательно иногда будучи представленным как ^[, ^ будучи стенографией для Ctrl.

Можно ввести последовательности управляющего символа, поскольку сырые данные упорядочивают на командной строке путем продолжения их Ctrl-v. Ctrl-v к большинству оболочек и программ останавливает интерпретацию следующего сочетания клавиш и вместо этого вставляет в его необработанную форму. Если Вы сделаете это или с Клавишей выхода или с Ctrl-v, то это отобразится на большинстве оболочек как ^[. Однако, хотя эта последовательность будет интерпретироваться, она не вырежет и вставит легко и может быть уменьшена до не последовательности управляющего символа при обнаружении определенными протоколами или программами.

Для обхождения этого, чтобы помочь использовать определенные утилиты представляют "необработанную" последовательность любой с \033 (восьмеричной ссылкой), преобразуйте ссылку в шестнадцатеричную систему \x1b или ссылкой специального символа \e . Это является почти таким же в пути который \t интерпретируется как Вкладка - который между прочим может также быть введен через Ctrl-i, или \n как новая строка или клавиша Enter, которая может также быть введена через Ctrl-m.

Таким образом, когда Gilles говорит:

27 = 033 = 0x1b = ^ [= \e

Он говорит что десятичный ASCII 27, восьмеричные 33, шестнадцатеричное число 1b, Ctrl-[и \e все равны, он подразумевает, что они все обращаются к тому же самому (семантически).

Когда Demizey говорит

^ [является просто представлением ESCAPE, и \e интерпретируется как фактический Символ ESC

Он имеет в виду семантически, но если Вы нажимаете Ctrl-v Ctrl-[это - точно то же как \e, вставленную последовательность сырых данных будут, скорее всего, рассматривать тот же путь, но это не всегда гарантируется, и таким образом, это рекомендовало использовать программно более портативный \e или 0x1b или \033 в зависимости от используемого языка/оболочки/утилиты.

16
27.01.2020, 19:50

Все они являются представлениями того символа, который используют некоторое программное обеспечение или некоторые люди. Я перечислил наиболее распространенные. Если Вы говорите с человеком, используйте то, что они поймут. (Очевидно моя попытка быть уверенным, что Вы поняли бы по крайней мере один из них, имела неприятные последствия.), Если Вы говорите с программным обеспечением, консультируйтесь с документацией для знания то, что это понимает.

В ударе, escape-последовательностях \e, \033 и \x1b работайте аргументом printf, в $'…', в подсказках, и в привязках клавиш. В привязках клавиш существует более общий синтаксис \C-[ который работает, потому что символ 27 - то, что Вы получаете от ввода Ctrl + [(что синтаксис является имитацией привязок клавиш Emacs). \033 работы во всех оболочках как аргумент printf; другие контексты и нотации зависимы от оболочки.

Экран не распознает ни одной из этих escape-последовательностей, но распознает ^ как префикс управления, таким образом, ^[ символ средств 27.

4
27.01.2020, 19:50

Теги

Похожие вопросы