Последовательность выхода - Escape sequence
An escape-последовательность это комбинация символы который имеет значение, отличное от содержащихся в нем буквальных символов;[1] он отмечен одним или несколькими предшествующими (и, возможно, завершающими) символами.[2]
Примеры
- в C (и аналогичные) языки, escape-последовательность представляет собой серию из 2 или более символов, начиная с обратной косой черты (\).[3]
- Для устройств, которые реагируют на ANSI escape последовательности, комбинация из 3 или более символов, начинающихся с символа «escape» ASCII (27 десятичных / 1Bh) и символа левой скобки «[» (5Bh).[6]
Последовательности управления
Когда была направлена эта серия символы используется для изменения штат из компьютеры и их прикрепленные периферийный устройства, а не для отображения или печати как обычные данные байты, они также известны как последовательности управления, отражая их использование в управление устройством, начиная с Инициатор контрольной последовательности - изначально код ASCII "escape-символ" - символ 27 (десятичный) - часто пишется "Esc" на колпачки.
С появлением терминалов ANSI большинство escape-последовательностей начиналось с два символы «ESC», затем «[» или специально выделенный CSI символ с кодом 155 (десятичный).
Не во всех управляющих последовательностях используется escape-символ; Например:
- Последовательности управления модемом, используемые AT /Hayes-совместимый модемы,[7][8] и
- Общие данные последовательности управления терминалом,[9][10][11] но их часто по-прежнему называли escape-последовательностями, и очень распространенное использование «экранирующих» специальных символов в языках программирования и параметрах командной строки сегодня часто использует символ «обратной косой черты» для начала последовательности.
Последовательности выхода в коммуникациях обычно используются, когда компьютер и периферийное устройство имеют только один канал для передачи информации туда и обратно (поэтому escape-последовательности являются примером внутриполосная сигнализация ).[12][13] Они были обычным явлением, когда большинство немые терминалы используемый ASCII с 7 битами данных для связи, а иногда может использоваться для переключения на другой набор символов для «чужих» или графических символов, которые в противном случае были бы ограничены 128 кодами, доступными в 7 битах данных. Даже относительно «тупые» терминалы реагировали на некоторые escape-последовательности, в том числе оригинальные механические принтеры Teletype (на которых были основаны «стеклянные телетайпы» или дисплеи) реагировали на символы 27 и 31, чтобы переключаться между режимами букв и цифр.
Клавиатура
Управляющий символ обычно назначается Клавиша Esc на компьютерная клавиатура, и могут быть отправлены другими способами, кроме как часть escape-последовательности. Например, клавишу Esc можно использовать в качестве символа ввода в таких редакторах, как vi,[14] или для резервного копирования одного уровня в меню в некоторых приложениях.[15] Hewlett Packard HP 2640 У терминалов была клавиша для режима «функции отображения», который отображал графику для всех управляющих символов, включая Esc, чтобы помочь в отладка Приложения.
Если предполагается, что клавиша Esc и другие клавиши, отправляющие escape-последовательности, имеют значение для приложения, возникает двусмысленность, если символьный терминал уже используется. Когда приложение получает ASCII escape-символ, неясно, является ли этот символ результатом нажатия пользователем клавиши Esc или начальным символом escape-последовательности (например, результатом нажатия клавиши со стрелкой). Традиционный метод разрешения неоднозначности состоит в том, чтобы наблюдать, следует ли другой символ быстро за escape-символом. В противном случае предполагается, что он не является частью escape-последовательности. Эта эвристический может выйти из строя при некоторых обстоятельствах, особенно без высоких современных скоростей связи.
Последовательности побега относятся как минимум к 1874 году. Код Бодо.[16][17][18]
Управление модемом
В Набор команд Hayes, например, определяет одну escape-последовательность, +++. (Чтобы интерпретировать +++, который может быть частью данных, поскольку в качестве escape-последовательности отправитель прекращает обмен данными на одну секунду до и после +++Когда модем обнаруживает это в потоке данных, он переключается из своего обычного режима работы, который просто отправляет любые символы на телефон, в командный режим, в котором следующие данные считаются частью командного языка. Вы можете вернуться к онлайн режим отправив команду O.
Набор команд Hayes модальный, переключение из командного режима в онлайн.[19][20] Это не подходит в том случае, если команды и данные будут быстро переключаться вперед и назад. Примером немодального языка управления escape-последовательностями является VT100, который использовал серию команд с префиксом Введение в контрольную последовательность.
Сравнение с управляющими символами
Управляющий символ - это персонаж, который изолированно выполняет некоторую управляющую функцию, например возврат каретки (CR). Последовательности выхода, напротив, состоят из одного или нескольких escape-символы которые меняют интерпретацию последующих символов.
Терминалы видеоданных ASCII
В VT52 терминал используется простой диграф такие команды, как escape-A: изолированно «A» просто означало букву «A», но как часть escape-последовательности «escape-A» она имела другое значение. VT52 также поддерживал параметры: это был непростой язык управления, закодированный как подстановка.
Позже VT100 терминал реализовал более сложный Escape-последовательности ANSI стандарт (теперь ECMA-48) для таких функций, как управление перемещением курсора, набор символов и улучшения отображения. Hewlett Packard HP 2640 В серии были, пожалуй, самые сложные escape-последовательности для блочного и символьного режимов, программных клавиш и их программных меток, графических векторов и даже для сохранения данных в файлы на магнитной ленте или диске.
Использование в DOS и Windows
Утилита, ANSI.SYS,[21] может использоваться для включения интерпретации управляющих последовательностей терминала ANSI (ECMA-48) под ДОС (используя $ e
в НЕЗАМЕДЛИТЕЛЬНЫЙ команда) или в окнах команд в 16-битном Windows. Подъем GUI приложения, которые напрямую пишут на карты дисплея, значительно сократили использование escape-последовательностей на платформах Microsoft, но их все еще можно использовать для создания интерактивных символьных экранных интерфейсов с произвольным доступом с помощью символьных библиотечных процедур, таких как printf не прибегая к программе с графическим интерфейсом.
Использование в дисплеях Linux и Unix
Текстовый терминал по умолчанию и текстовые окна (например, использование xterm ) отвечают на escape-последовательности ANSI.
Цитата побег
Обзор
Когда escape-символ требуется внутри строки, заключенной в кавычки / экранированные строки, в языках программирования и сценариях используются две стратегии:
- двойной разделитель (например,
«Он этого не делал».
)[22] - вторичная escape-последовательность
Пример последнего - использование каретки (^
). Например. это выводит «Это можно сделать с помощью вырезания и вставки» в CMD. (в противном случае амперсанд имеет ограниченное использование)[23]
echo Вы можете сделать это через Вырезать ^ и Вставить
В деталях
Обычно управляющие последовательности используются для удаления управляющих символов, обнаруженных в потоке двоичных данных, чтобы они не вызывали свою функцию управления по ошибке. В этом случае управляющий символ заменяется определенным «escape-символом» (который не обязательно должен быть escape-символом US-ASCII) и одним или несколькими другими символами; после выхода из контекста, в котором управляющий символ вызвал бы действие, последовательность распознается и заменяется удаленным символом.[23] Для передачи самого «escape-символа» отправляются две копии.[22]
Во многих языки программирования управляющие последовательности интерфейсов командной строки используются в символьные литералы и строковые литералы, для выражения символов, которые не печатаются или противоречат синтаксису символов или строк. Например, управляющие символы сами могут быть запрещены для размещения в программе, закодированной программой-редактором, или могут иметь нежелательные побочные эффекты при вводе в команду. Символ конца кавычки также является проблемой для программистов, которую можно решить, избегая его. В большинстве случаев escape-символом является обратная косая черта ("\").
Образцы
Например, одинарная кавычка может быть выражена как '\''
с момента написания '''
не приемлемо.
Многие современные языки программирования определяют символ двойных кавычек ("
) как разделитель для строкового литерала. Управляющий символ обратной косой черты обычно обеспечивает способы включения двойных кавычек внутри строкового литерала, например, путем изменения значения символа двойных кавычек, встроенного в строку (\"
) или путем изменения значения последовательности символов, включая шестнадцатеричное значение символа двойных кавычек ( x22
). Обе последовательности кодируют буквальные двойные кавычки ("
).
Распечатать "Нэнси сказала"Здравствуйте Мир!"толпе".;
выдает синтаксическую ошибку, тогда как:
Распечатать «Нэнси сказала толпе " Hello World! "».; ### пример "
производит желаемый результат. Другой вариант:
Распечатать «Нэнси сказала x22Hello World! X22 толпе».; ### пример x22
использует « x», чтобы указать, что следующие два символа являются шестнадцатеричными цифрами, «22» - это значение ASCII для двойных кавычек в шестнадцатеричном формате.
C, C ++, Ява, и Рубин все допускают одинаковые два стиля перехода с обратной косой черты. В PostScript язык и Microsoft Расширенный текстовый формат также используйте escape-символы обратной косой черты. В цитируемый-печатный кодирование использует знак равенства как escape-символ.
URL и URI использовать процентное кодирование заключать в кавычки символы со специальным значением, как для символов, отличных от ASCII.
Другой похожий (и частично перекрывающийся) синтаксический прием: строппинг.
Некоторые языки программирования также предоставляют другие способы представления специальных символов в литералах, не требуя escape-символа (см., Например, коллизия разделителей ).
Смотрите также
использованная литература
- ^ «Последовательность побега».
- ^ "Символы". Учебники по Java.
- ^ «Последовательности побега».
Комбинации символов, состоящие из обратной косой черты (), за которой следует буква или комбинация цифр, называются escape-последовательности.
- ^ Матиас Байненс (21 декабря 2011). "Escape-последовательности символов JavaScript".
Символ , за которым следует новая строка, не является escape-последовательностью символа, а является продолжением строки. Новая строка не становится частью строки.
- ^ «Последовательности побега».
- ^ «Таблица ASCII - escape-последовательности ANSI».
Эти последовательности определяют функции, которые изменяют графику дисплея, управляющая […] управляющая последовательность ANSI представляет собой последовательность символов ASCII, первые два из которых - […]
- ^ «Глава 5 - AT-команды» (PDF).
- ^ «Сводка по набору AT-команд и регистрам для модулей аналогового модема».
- ^ «Терминалы Data General: обсуждение».
- ^ "Что такое Терминал?".
- ^ "Программа эмуляции терминала Data General DG210 DG211".
- ^ «Последовательность побега».
- ^ «Глоссарий по терминалам и принтерам».
- ^ «Двенадцать полезных» vi «команд».
Команды vi […] Нажав клавишу Esc (Escape), вы […]
- ^ «Пять неожиданных применений клавиши Esc». PCworld. 2009-10-29.
- ^ «Что такое ASCII? Экономист объясняет». Экономист. 2013-06-09.
- ^ «Код Бодо и CCITT».
Код Бодо, изобретенный в 1870 году и запатентованный в 1874 году Ж. Бодо, […]
- ^ «Руководство по использованию наборов символов в Европе».
элементы C0 и C1 управляющих символов […] 5-битный код, запатентованный Жаном-Морисом-Эмилем Бодо (1845–1903) в 1874 году
- ^ «Базовый набор команд Hayes AT». 2011-02-05.
+++ - «Escape Sequence» - эта команда инициирует escape-последовательность для возврата модема в режим онлайн-команд.
- ^ "Основы программирования модемов".
Когда модем находится в командном режиме, модем может принимать от вас команды.
- ^ 17. Общие сведения об ANSI.SYS - Special Edition с использованием MS-DOS 6.22.
- ^ а б "Редактирование апострофа ('aaa') (Справочник по языку FORTRAN 77)".
Внутри поля два последовательных апострофа […]
- ^ а б «CMD - Пакетная обработка - Прерывание с помощью каретки».