캐럿 대괄호 대괄호 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.