\ e와 ^ [의 차이점


15

은 썼습니다 :

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

Demizey 다음 과 같이 썼습니다 .

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

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

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

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

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

답변:


16

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

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

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

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

Gilles가 말할 때 :

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

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

Demizey가 말할 때

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

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


4

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.