캐럿 대괄호 대괄호 A ^ [[A-무슨 뜻입니까?


13

이것이 이미 요청 된 경우 사과하지만 어떻게 찾을 수 있을지 잘 모르겠습니다. 검색 엔진에서 "^ [[A"를 검색하면 "^ [["부분은 무시됩니다.

어쨌든 내 질문 : 때로는 화살표 키를 눌렀을 때 터미널 (Mac의 경우)에서 문자 "^ [[A", "^ [[B", "^ [[C"또는 "^ [[D")가 나타납니다 . 나는 DOS를 사용할 때 몇 년 전에 만난 것을 기억하는 것 같으며 훨씬 더 자주 발생했다고 생각합니다.

왜 이런 일이 발생하며 무엇을 의미합니까?

답변:


20

이것들은 ANSI 이스케이프 코드 입니다. 는 ^[다음이, ESC (이스케이프) 문자를 나타내는 [실제 왼쪽 대괄호이며, 문자는 이스케이프 코드의 기능을 나타냅니다. 이 Esc[부품을 CSI (Control Sequence Introducer)라고합니다. 따라서 순서 CSI A는 화살표 위로 또는 CUU (CUrsor Up)를 의미합니다.

어쨌든,이 체계는 VT100 디스플레이 터미널 의 시간으로 거슬러 올라갑니다 (1978 년에 도입 됨). VT100에서 사용 된 일부 이스케이프 시퀀스는 1980 년대 초 ANSI에 의해 표준화되었으며 그 이후로 계속 사용되었습니다.

일반적으로 화살표 키를 누르면 일부 프로그램 (예 : 셸)이 청취 중이며 해당 프로그램을 실행할 수 있습니다. 따라서 위쪽 화살표를 누르면 명령 기록에서 뒤로 스크롤됩니다. 그러나 프로그램이 실행 중이면 화살표 키의 이스케이프 시퀀스를 이해 하지 못하면 일반적으로 다른 키와 마찬가지로 터미널로 다시 에코됩니다. 따라서 ^[[A위쪽 화살표 키를 누르는 경우가 종종 있습니다 .


또한 ^는 터미널에서 "제어"를 표시하는 일반적인 UNIX 규칙임을 지적 할 가치가 있습니다. 예를 들어, Ctrl + A를 눌렀을 때와 같은 방식으로 무시 된 경우 "^ A"로 표시됩니다. Ctrl + [는 실제로 이스케이프 문자와 동의어입니다. 덧붙여서, 이것이 처음에 일어나는 것은 무엇입니까? 어떤 소프트웨어가 캐럿을 인쇄하기로 결정합니까? 터미널 에뮬레이터 자체입니까, 아니면 내가 모르는 것이 있습니까?
Muzer

@Muzer 커널 자체는 반향 문자의 캐럿 서식을 수행합니다. 이 기능은 다음과 같이 끌 수 있습니다.stty -echoctl

커널? 흥미롭게도, 나는 그것이 깊은 곳으로 갔다는 것을 몰랐습니다 (비록 비록 초기 부팅 단계에서도 발생하기 때문에 분명했습니다)!
Muzer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.