이스케이프 시퀀스

Escape sequence

컴퓨터 과학에서 이스케이프 시퀀스는 [1]문자 이외의 의미를 가진 문자의 조합으로, 1개 이상의 선행(및 경우에 따라서는 종료)[2] 문자로 표시됩니다.

  • C 및 많은 파생 프로그래밍 언어에서 문자열 이스케이프 시퀀스는 백슬래시[3]시작하는 두 문자 이상의 연속입니다.
    • C에서는 줄 바꿈 직전의 백슬래시는 이스케이프 시퀀스를 구성하는 이 아니라 두 번째 변환 단계에서 물리 소스 라인을 논리 소스 라인으로 분할하는 것에 주의해 주십시오.한편 문자열 이스케이프 시퀀스는 다섯 번째 변환 [4]단계에서 변환됩니다.
    • 백슬래시 문자 자체를 나타내기 위해\\를 사용할 수 있습니다.첫 번째 백슬래시는 이스케이프를 나타내고 두 번째 백슬래시는 이스케이프를 나타냅니다.[5]
    • 여러 가지 방법으로 문자를 이스케이프할 수 있습니다.ASCII 인코딩을 전제로 한 이스케이프 시퀀스는\x5c(소수),\\,\134(8진수) 및\x5C모두 같은 문자를 인코딩합니다.백슬래시\.
  • ANSI 이스케이프 시퀀스에 응답하는 디바이스에서는 ASCII "escape" 문자(10진수 문자 코드 27)로 시작하는3 문자 이상과 왼쪽 괄호 문자 조합[(문자 코드 91)는 이스케이프 시퀀스를 정의한다.

제어 시퀀스

이 일련의 문자가 일반 데이터 바이트로 표시 또는 인쇄되는 것이 아니라 컴퓨터와 연결된 주변 장치의 상태를 변경하기 위해 사용되는 경우 제어 시퀀스라고도 합니다. 제어 시퀀스 이니시에이터(원래는 "회피 문자")부터 시작하여 장치 제어에 사용되는 것을 반영합니다.cter" ASCII 코드 - 문자 27(10진수) - 종종 키캡에 "Esc"로 표기됩니다.

ANSI 단말기의 도입으로 대부분의 이스케이프 시퀀스는 2개의 문자 "ESC"와 ""로 시작되거나 코드 155(10진수)로 특별히 할당된 CSI 문자로 시작됩니다.

모든 제어 시퀀스가 이스케이프 문자를 사용한 것은 아닙니다.다음은 예를 제시하겠습니다.

  • AT/Hayes 호환[6][7] 모뎀에서 사용되는 모뎀 제어 시퀀스
  • Data General 터미널 제어 [8][9][10]시퀀스는 여전히 이스케이프 시퀀스라고 불리며, 오늘날 프로그래밍 언어와 명령줄 파라미터에서 특수문자의 매우 일반적인 사용은 시퀀스를 시작하기 위해 "백슬래시" 문자를 사용하는 경우가 많습니다.

통신에서의 이스케이프 시퀀스는 일반적으로 컴퓨터와 주변기기에 정보를 주고받기 위한 채널이1개밖에 없는 경우에 사용됩니다(따라서 이스케이프 시퀀스는 인밴드시그널링[11][12]예입니다).대부분의 멍청한 단말기가 7 데이터 비트를 가진 ASCII를 통신에 사용할 때 일반적이며, "외부" 문자나 그래픽 문자를 위해 다른 문자 집합으로 전환하기 위해 사용되기도 했습니다. 그렇지 않으면 7 데이터 비트에서 사용할 수 있는 128개의 코드에 의해 제한될 수 있습니다.원래의 기계식 텔레타이프 프린터('유리 텔레타이프' 또는 VDU의 기반)를 포함한, 비교적 「덤」한 단말기도 문자 27과 31에 응답해 문자와 숫자 모드를 번갈아 가며 응답했습니다.

키보드

이스케이프 문자는 보통 컴퓨터 키보드의 Esc 키에 할당되며 이스케이프 시퀀스의 일부로서 이외의 방법으로 송신할 수 있습니다.예를 들어, Esc 키는 [13]vi와 같은 편집기에서 입력 문자로 사용하거나 일부 [14]응용 프로그램에서 메뉴의 한 레벨을 백업하기 위해 사용할 수 있습니다.Hewlett Packard HP 2640 터미널에는 Esc를 포함한 모든 제어 문자의 그래픽을 표시하여 응용 프로그램의 디버깅에 도움이 되는 "디스플레이 기능" 모드가 있습니다.

Esc 키와 이스케이프 시퀀스를 송신하는 다른 키가 둘 다 애플리케이션에 의미가 있다고 생각되는 경우 문자 단말기가 사용 중인 경우 모호성이 발생합니다.응용 프로그램이 ASCII 이스케이프 문자를 수신하면 해당 문자가 사용자가 Esc 키를 누른 결과인지 또는 이스케이프 시퀀스의 초기 문자인지(예를 들어 화살표 키 누름에 의한 것인지) 명확하지 않습니다.모호성을 해결하는 전통적인 방법은 다른 문자가 이스케이프 문자를 빠르게 따라오는지 여부를 관찰하는 것입니다.그렇지 않은 경우 이스케이프 시퀀스의 일부가 아닌 것으로 간주됩니다.발견적 접근법은 특히 빠른 현대 통신 속도가 없으면 일부 상황에서 실패할 수 있습니다.

이스케이프 시퀀스는 적어도 1874 Baudot [15][16][17]코드로 거슬러 올라갑니다.

모뎀 제어

예를 들어 Hayes 명령어세트는 단일 이스케이프 시퀀스 +++ 를 정의합니다(데이터의 일부일 가능성이 있는 ++ 를 ++ 의 전후로 1초간 통신을 정지합니다).모뎀은 데이터 스트림에서 이 문제가 발생하면 단순히 임의의 문자를 전화기에 전송하는 일반 동작 모드에서 다음 데이터가 명령어 언어의 일부로 간주되는 명령어모드로 전환합니다.O 명령어를 전송하여 온라인 모드로 되돌릴 수 있습니다.

Hayes 명령어세트는 모드이며 명령어모드에서 온라인모드로 [18][19]전환됩니다.이는 명령어와 데이터가 빠르게 전환되는 경우에는 적합하지 않습니다.비모달 이스케이프 시퀀스컨트롤 언어의 예로는 컨트롤 시퀀스인트로듀서에 의해 프리픽스가 부가된 일련의 명령어를 사용한VT100이 있습니다.

제어 문자와의 비교

제어문자는 캐리지 리턴(CR)과 같은 제어기능을 가진 문자입니다.반면 이스케이프 시퀀스는 후속 문자의 해석을 변경하는 하나 이상의 이스케이프 문자로 구성됩니다.

ASCII 비디오 데이터 단자

VT52 단말기는 excape-A와 같은 간단한 digraph 명령을 사용했습니다.단, A는 단순히 문자 "A"를 의미하지만 excape-A의 일부로서 다른 의미를 가집니다.또한 VT52는 대체로 인코딩된 간단한 제어 언어가 아니라는 파라미터도 지원했습니다.

최신 VT100 단말기는 커서 이동 제어, 문자 세트 및 디스플레이 확장 등의 기능을 위해 보다 정교한 ANSI 이스케이프 시퀀스 표준(현재의 ECMA-48)을 구현했습니다.Hewlett Packard HP 2640 시리즈는 블록 모드와 문자 모드, 프로그래밍 키와 소프트 라벨, 그래픽 벡터, 심지어 테이프나 디스크 파일에 데이터를 저장하는 가장 정교한 이스케이프 시퀀스를 가지고 있을 것입니다.

DOS 및 Windows에서 사용

유틸리티, ANSI.SYS를 [20]사용하여 DOS에서 ANSI(EMA-48) 단말 이스케이프 시퀀스를 해석할 수 있습니다(사용 방법).$ePROMPT 명령어) 또는 16비트 Windows 명령어창에 표시됩니다.디스플레이 카드에 직접 쓰는 GUI 어플리케이션의 등장으로 Microsoft 플랫폼에서의 이스케이프 시퀀스의 사용은 크게 감소했지만 GUI 프로그램에 의존하지 않고 printf 등의 문자 기반 라이브러리 루틴을 사용하여 대화식 랜덤 액세스 문자 기반 화면 인터페이스를 만들 수 있습니다.

Linux 및 Unix 디스플레이에서 사용

기본 텍스트 단말기 및 텍스트창(xterm 사용 등)은 ANSI 이스케이프 시퀀스에 응답합니다.

이스케이프 견적

개요

따옴표/에스케이프 문자열 내에서 이스케이프 문자가 필요한 경우 프로그래밍 언어 및 스크립트 언어에서는 다음 두 가지 전략이 사용됩니다.

  • 이중 구분 기호(예:'He didn''t do it.'[21]
  • 이차 이스케이프 시퀀스

후자의 예는 캐럿(carlet)을 사용하는 것입니다.^예: 이 출력은 CMD의 "Cut & Paste를 통해 할 수 있습니다." (그렇지 않으면 앰퍼샌드는 [22]사용이 제한됩니다.)

echo Cut^&Paste를 통해 실행할 수 있습니다.

상세하게

이스케이프 시퀀스의 일반적인 용도는 실제로 바이너리 데이터 스트림에서 발견된 제어 문자를 삭제하여 실수로 제어 기능을 발생시키지 않도록 하는 것입니다.이 경우 제어문자는 정의된 '에스케이프 문자'(US-ASCII 이스케이프 문자일 필요는 없음) 및 1개 이상의 문자로 대체됩니다.제어문자가 [22]액션을 일으켰을 가능성이 있는 컨텍스트를 종료하면 시퀀스가 인식되어 삭제된 문자로 대체됩니다.에스케이프 문자 자체를 송신하기 위해서, 2개의 카피가 [21]송신됩니다.

많은 프로그래밍 언어 및 명령줄 인터페이스 이스케이프 시퀀스는 문자 리터럴문자열 리터럴에서 인쇄가 불가능하거나 문자 또는 문자열 구문과 충돌하는 문자를 표현하기 위해 사용됩니다.예를 들어, 제어 문자 자체는 편집기 프로그램에 의해 코드화된 프로그램에 배치할 수 없거나 명령에 입력할 경우 바람직하지 않은 부작용이 발생할 수 있습니다.따옴표 끝 문자는 프로그래머에게도 문제이며, 이를 회피함으로써 해결할 수 있습니다.대부분의 컨텍스트에서 이스케이프 문자는 백슬래시("\")입니다.

샘플

예를 들어, 작은 따옴표 문자는 다음과 같이 나타낼 수 있습니다.'\''집필 이래'''받아들일 수 없습니다.

현대의 많은 프로그래밍 언어에서는 이중 따옴표를 사용하고 있습니다.")를 문자열 리터럴의 딜리미터로 지정합니다.백슬래시 이스케이프 문자는 보통 문자열 리터럴 내에 이중 따옴표를 포함하는 방법을 제공합니다.예를 들어 문자열에 포함된 이중 따옴표 문자( )의 의미를 변경하는 것입니다.\"또는 이중 따옴표( )의 16진수 값을 포함한 일련의 문자의 의미를 변경합니다.\x22두 시퀀스 모두 리터럴한 이중 따옴표()를 부호화합니다.").

Perl 또는 Python 2의 경우

인쇄물 낸시가 말했다.안녕 세계!"관중에게.; 

그럼 구문 오류가 발생합니다.단, 다음과 같습니다.

인쇄물 낸시는 헬로 월드!"군중을 향해.;  ## \"의 예 

는 의도한 출력을 생성합니다.또 다른 대안:

인쇄물 낸시가 말했다.\ x 22헬로 월드!관중에게 22엔.;  ## \x22의 예 

는 다음 2글자가 16진수임을 나타내기 위해 "\x"를 사용합니다.「22」는 16진수에서의 큰따옴표의 ASCII 값입니다.

C, C++, Java Ruby는 모두 동일한2개의 백슬래시 이스케이프 스타일을 허용합니다.PostScript 언어 및 Microsoft 리치 텍스트 형식에서도 백슬래시 이스케이프를 사용합니다.따옴표로 둘러싸인 인쇄 가능한 부호화에서는 이스케이프 문자로 등호 부호가 사용됩니다.

URL URI는 비ASC와 같이 특별한 의미를 가진 문자를 따옴표로 묶기 위해 percent-encoding을 사용합니다.II 문자

또 다른 유사한(및 부분적으로 중복되는) 구문 트릭은 스트로핑입니다.

일부 프로그래밍 언어는 이스케이프 문자를 필요로 하지 않고 특수 문자를 리터럴로 표시하는 다른 방법도 제공합니다(: 딜리미터 충돌 참조).

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Escape Sequence".
  2. ^ "Characters". The Java Tutorials.
  3. ^ "Escape Sequences". Character combinations consisting of a backslash \ followed by a letter or by a combination of digits are called escape sequences.
  4. ^ "ISO/IEC 9899:201x Committee Draft N1570" (PDF). 5.1.1.2 Translation phases, 2.: Each instance of a backslash character (\) immediately followed by a new-line character is deleted, splicing physical source lines to form logical source lines. [...]
  5. ^ "Escape sequences".
  6. ^ "Chapter 5 – AT Commands" (PDF).
  7. ^ "AT Command Set and Register Summary for Analog Modem Modules".
  8. ^ "Data General terminals: discussion of".
  9. ^ "What's a Terminal?".
  10. ^ "Data General DG210 DG211 Terminal Emulation Software".
  11. ^ "Escape sequence".
  12. ^ "Terminals & Printers Handbook Glossary".
  13. ^ "Twelve Useful "vi" Commands". vi commands […] Pressing the Esc (Escape) key is how you […]
  14. ^ "Five Unexpected Uses for the Esc Key". PCworld. 2009-10-29.
  15. ^ "What is ASCII? The Economist explains". The Economist. 2013-06-09.
  16. ^ "Baudot and CCITT code". The Baudot code, invented in 1870 and patented in 1874 by J. Baudot is […]
  17. ^ "Guide to the use of Character Sets in Europe". elements C0 and C1 of control characters […] a 5-bit code patented by Jean-Maurice-Emile Baudot (1845-1903) in 1874
  18. ^ "Basic Hayes AT Command Set". 2011-02-05. +++ - "Escape Sequence" - This command initiates an escape sequence to return the modem to the on-line command mode
  19. ^ "Modem Programming Basics". When a modem is in command mode, the modem can accept commands from you
  20. ^ 17. Understanding ANSI.SYS - Special Edition Using MS-DOS 6.22.
  21. ^ a b "Apostrophe Editing ('aaa') (FORTRAN 77 Language Reference)". Within the field, two consecutive apostrophes […]
  22. ^ a b "CMD - Batch - Escaping with Caret".