곡절 / 캐럿 문자가 Ctrl의 기호로 사용되는 이유는 무엇입니까?


18

나는 오래 전에 리눅스 콘솔을 사용하기 시작했지만 곡절 캐럿 캐릭터 ( ^)에 대해 나 자신에게 질문하지 않았다 . 왜 단어를 대체하는 데 사용되는지 묻고 싶습니다 Ctrl.

나는 다른 날에 나노를 사용하는 동안 그것에 대해 생각하고 인터넷에 몇 가지 답변이 있는지 찾아 보았지만 내가 찾은 것은 "그것이 무엇인지"와 "이것이 무엇을 나타내는 지"에 대한 질문 일뿐입니다.

역사적인 이유가 있습니까? 아니면 이상한 규칙에서 비롯된 것입니까?


2
원본 vi(SunOS 3.5의 것 이상) 조차도 글자 앞에 캐럿 / 곡절 플렉스를 사용하여 ctrl-C, ctrl-V 등을 재현했습니다 stty. 반면, 그 시대의 쉘 스크립트에서 ^동의어로 사용 |되었으므로 항상 stty호출 에서 캐럿을 백 슬래시해야합니다 . 좋은 질문.
Bruce Ediger

1
내가 추측해야한다면, Shift, Control 및 Meta (Super 및 Hyper와 같은 덜 알려진 ilk)가 모두 수정 자 키라는 사실과 관련이 있다고 말할 수 있습니다. 아마도 가장 일반적으로 사용됩니다. 대부분의 캐릭터의 쉬프트 된 버전은 간단히 입력 할 수 있기 때문에 (예 : 3/ #), ^다른 종류의 '쉬프트'의 시각적 속기 일 수 있습니다. 대부분의 typable 키 / 문자, Ctrl 키를 그냥 문자의 64 비트를 해제 사실도 관련이있을 수 있습니다 - ^속기되고 NOT (0x40).
DopeGhoti

답변:


11

circumflex ( ^)는 전신 프린터의 위쪽 화살표 문자와 동일합니다. SunOS 등이 등장했을 때이 부분은 과거 10 년이 넘었습니다. 같은 문자 (대체)가 수학적 표현에 사용되었습니다 ^( 예 : 힘 (다른 사람이 사용할 수있는 경우 **)). 파스칼에서도 포인터를 나타 내기 위해 사용되었습니다.

제어 문자를 나타내는 데 사용됩니다, 당신은 그것을 예를 들어 감속 설명서에 사용 찾을 수 있습니다 1980 년 이전에 (적어도)이 날짜 (그것이 내가 TECO을 사용하는 1970 년대 중반에 의해 사용 확실히했다. 유틸리티를 수동 1,973에서 (페이지 927) controlC예를 들어 보여줍니다 .

적합한 출처를 찾고, Gil Smith의 Teletypewriter 통신 코드 는 1960 년대 후반에 이것을 배치하기에 충분하다고 말합니다 (원점이 Unix 이전 버전임을 증명 함).

ASCII-63은 대부분 현재 ASCII-67 버전과 동일합니다. 제어 문자 (위의 col-1)의 정의는 아래 정의 된대로 두 버전간에 다양합니다. 또한 ASCII-63에서는 RUB (0x7F), ACK (0x7C) 및 ESC (0x7E)를 제외하고 상위 32 개 위치 (col-4)가 정의되지 않았습니다. ASCII-63에 ALT-MODE char (0x7D)에 대한 참조가 일치하지 않습니다. 1967 버전에서 RUB는 DEL이되어 같은 위치에 머물 렀지 만 ACK와 ESC는 제어 문자 영역 (col-1)으로 이동했습니다. ASCII-67에서 ^는 위쪽 화살표 기호를 대체하고 _는 왼쪽 화살표를 대체했습니다.

ASCII-63 및 ASCII-67은 ASCII의 일반적인 변형이지만 일부 과도기적 인 버전도있는 것으로 보입니다. Teletype Model 33 설명서에는 SUB 대신 SS가있는 1965 버전의 ASCII에 대한 참조가 있습니다. (0x1A), \ (@ (0x40), ~ (\ (0x5C)), | (0x7C) 및 | ~ (0x7E). M33 및 M35 시스템의 Teletype 코드 카드는 1966 버전의 ASCII 버전을 나타내지 만 카드에 표시된 인쇄 가능 문자는 모든 버전에서 동일합니다.

ASCII 및 EBCDIC와 같은 다른 인코딩간에 파일을 교환하는 데 문제가 있었기 때문에 문자가 더 이상 ASCII에 존재하지 않는 한 오랫동안 위쪽 화살표를 렌더링 할 수있는 프린터가있었습니다.


1
0x5e는 위쪽 화살표 ^이므로 문자가 원래 Unix 셸에서 파이프 연산자로 사용 된 이유를 설명합니다 (한 명령에서 다른 명령으로 데이터가 전달되는 아이디어를 전달 함). Bourne 쉘은 여전히 ^대체 파이프 연산자로 취급합니다 (Thomson 쉘과의 역 호환성을 가정합니다).
Stéphane Chazelas

예-위쪽 화살표는 ASCII와 함께 사용하기에 너무 유용했습니다. 이것은 또한 더 직접적인 키보드 타이 인을 생각 나게하지만, 설명 할 그림을 찾지 못했습니다.
Thomas Dickey

1
0x9 (TAB)는 일반적으로 ^I, 0x89는 M-^I, 0xc9는 M-I, 0xe9 는으로 표시 됩니다 M-i. 메타 대신에 어떤 캐릭터를 사용해 본 적이 M-있습니까?
Stéphane Chazelas

나쁘지 않음 : 슈퍼 / 메타 / 하이퍼에 대해 많은 관심을 기울이지 않았습니다. 왜냐하면 그들이 소개되었을 때 가장 많이 보지 못한 터미널에만 적용 되었기 때문입니다.
Thomas Dickey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.