\ e와 ^ [의 차이점 질 은 썼습니다 :

은 썼습니다 :

문자 27 ​​= 033 = 0x1b = ^[=\e

Demizey 다음 과 같이 썼습니다 .

^ [는 ESCAPE의 표현 일 뿐이며 \ e는 실제 ESCAPE 문자로 해석됩니다.

그런 다음 TechRepublic 기사 에서이 줄을 찾았습니다.

키 시퀀스를 ^ [[24 ~가 아니라 \ e [24 ~)로 쓰십시오. ^ [시퀀스는 [Esc] 키와 동일하기 때문에 쉘에서 \ e로 표시됩니다. 예를 들어, 키 시퀀스가 ​​^ [[OP 인 경우 사용되는 바인드 코드는 \ e [OP입니다.

그러나 \ e 대신 ^ [를 사용하는 매핑을 사용하고 있습니다.

그래서 그들은 상호 교환이 가능합니까? 언제 대신 다른 것을 사용해야합니까?



답변

ANSI ASCII 표준을 살펴보면 문자 세트의 하단 부분 (처음 32 자)은 “제어 문자”(때때로 “이스케이프 시퀀스”라고 함)로 예약되어 있습니다. NUL 캐릭터, Life Feed, 캐리지 리턴, 탭, 벨 등과 같은 것들입니다. 대부분의 Ctrl키는 다른 키와 조합 하여 키를 눌러 에뮬레이션 할 수 있습니다 .

27 번째 (10 진) 또는 \0338 진 시퀀스 또는 0x1b16 진 시퀀스 이스케이프 시퀀스입니다. 이들은 모두 동일한 제어 순서를 나타냅니다. 다른 쉘, 언어 및 도구는이 순서를 다른 방식으로 참조합니다. 그 Ctrl시퀀스가된다 Ctrl[, 이에 따라 때로는로 표현되는 ^[, ^에 대한 간단한 손 되 Ctrl.

명령 행에서 제어 문자 시퀀스를 Ctrl– 로 진행하여 원시 시퀀스로 입력 할 수 있습니다 v. Ctrlv대부분의 쉘과 프로그램에서 다음 키 시퀀스의 해석을 중지하고 대신 원시 형식으로 삽입합니다. 당신이 중 하나를 사용하여이 작업을 수행 할 경우 Escape키 또는 Ctrlv그것은 대부분의 쉘에 표시됩니다 ^[. 그러나이 시퀀스는 해석되지만 쉽게 잘라내어 붙여 넣을 수 없으며 특정 프로토콜이나 프로그램에서 발생하면 제어되지 않는 문자 시퀀스로 축소 될 수 있습니다.

이 문제를 해결하기 쉽게하기 위해 특정 유틸리티는 \033(8 진 참조), 16 진 참조 \x1b또는 특수 문자 참조로 “원시”시퀀스를 나타냅니다 \e. 이것은 많은 방식으로 동일한 \tA와 해석 Tab도를 통해 입력 될 수있는 방법에 의해 – Ctrli또는 \n개행하거나 같은 Enter도를 통해 입력 가능한 키 Ctrlm.

Gilles가 말할 때 :

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

그는 진수 ASCII 27 진수 33 진수 1B를 말하고있다 Ctrl[그리고 \e모두 자신이 모두 동일한 것은 (의미)를 참조 의미와 동일.

Demizey가 말할 때

^ [는 ESCAPE의 표현 일 뿐이며 \ e는 실제 ESCAPE 문자로 해석됩니다.

그는 의미 의미하지만, 당신이 누르면 Ctrlv Ctrl[이 정확히 동일하다 \e원시 삽입 순서가 가장 가능성이 같은 방식으로 처리됩니다,하지만이 항상 보장되지 않으며, 그것은 프로그램의 이식성 사용하는 것이 좋습니다 있도록 \e하거나 0x1b또는 \033따라 사용중인 언어 / 쉘 / 유틸리티에 대해


답변

이들 모두는 일부 소프트웨어 또는 일부 인간이 사용하는 캐릭터의 표현입니다. 가장 일반적인 것을 나열했습니다. 인간과 대화하는 경우 이해할 수있는 것을 사용하십시오. (어쩌면이 백 파이어 중 하나 이상을 이해하려고 노력한 것 같습니다.) 소프트웨어와 대화하는 경우 설명서를 참조하여 소프트웨어의 이해 내용을 확인하십시오.

bash는, 이스케이프 시퀀스에서 \e, \033\x1b인수로 직장 printf에서 $'…', 프롬프트, 그리고 키 바인딩한다. 키 바인딩에는 \C-[문자 27이 Ctrl+ 를 입력하여 얻는 것이므로 작동 하는보다 일반적인 구문 이 있습니다 [(구문은 Emacs 키 바인딩의 모방입니다). \033모든 쉘에서 인수로 작동합니다 printf. 다른 문맥과 표기법은 쉘에 따라 다릅니다.

화면은 이러한 이스케이프 시퀀스를 인식하지 못하지만 ^제어 접두어로 인식 하므로 ^[문자 27을 의미합니다.