Ctrl + 문자 키보드 단축키를 사용할 때 왜 ^ C, ^ V 등이 터미널에 나타 납니까? 때 때때로, 나는 실수로 사용합니다

명령의 출력에서 텍스트를 복사 – 붙여 넣을 때 때때로, 나는 실수로 사용합니다 Ctrl+ c대신 Ctrl+ Shift+ c.

따라서 명령 줄은이를 다음과 같이 해석합니다 ^C.

왜 이런거야? 명령 행이 control입력을 ^? 로 해석하는 이유는 무엇 입니까?



답변

실제로 문자 “^ C”를 삽입하지는 않습니다. 다음과 같이 인쇄 할 수없는 ASCII 제어 문자를 나타냅니다.

  • ^C → ETX (텍스트 끝, 종료 신호 전송), ASCII 0x03
  • ^D → EOT (전송 종료, 입력 종료), ASCII 0x04
  • ^H→ BS (백 스페이스 \b), ASCII 0x08
  • ^J→ LF (줄 바꿈 \n), ASCII 0x0A
  • ^L → FF (양식 공급, 새 페이지, 터미널 삭제), ASCII 0x0C
  • ^M→ CR (캐리지 리턴 \r), ASCII 0x0D

이것은 키보드를 사용하여 삽입 할 수있는 가능한 ASCII 제어 문자의 작은 추출입니다. 여기 에서 전체 목록을 찾을 수 있습니다 .

가장 기억해야 할 것은 Ctrl+ C, Ctrl+ DCtrl+ L입니다.


답변

CTRL+ KEY콤보는 터미널에서 인쇄 할 수없는 ASCII 문자로 해석 되므로 인쇄 할 수없는 문자를 나타내야합니다.

ANSI를 지원하는 VT 터미널 에서 유래 된 규칙 은 캐럿 ( ) 및 으로 표시되는 CTRL+ KEY콤보를 나타내는 것 입니다 .CTRL^KEYKEY


답변

터미널에서 복사하거나 터미널로 붙여 넣을 때 단축키 Ctrl+ InsertShift+를 Insert각각 사용하는 것이 가장 좋습니다 .

X 그래픽 환경에서 Ctrl+ InsertShift+ Insert는 동일한 Ctrl+ CCtrl+에 연결되어 있지만 터미널 사용을위한보다 일반적인 단축키입니다 V.

대부분의 터미널에서 Ctrl+ C(로 표시 ^C)는 프로세스 실행을 중지하는 데 사용되므로 해당 바로 가기로 붙여 넣기가 작동하지 않습니다.

빠른 복사 및 붙여 넣기를 위해 복사하려는 텍스트를 강조 표시 한 다음 붙여 넣을 위치를 마우스 오른쪽 버튼으로 클릭하여 X의 기본 버퍼를 활용할 수 있습니다. 키보드가 필요하지 않습니다.


답변

당신은 해야 사용 할 수 Ctrl+를 C하지 Shift+ Ctrl+ C, 명령 행에서, 그들은 같은 일을 (하기 때문에 Ctrl+가 C보다 쉽습니다 Shift+ Ctrl+ C). GUI가 일부 키 입력을 캡처하고 특별한 작업을 수행하는 특정 그래픽 환경에서는 그렇지 않을 수 있지만, 키 입력이 실제로 명령 행으로 전송되면 차이가 없습니다. 그렇기 때문에 Ctrl+를 누르면 C소문자 C 대신 ^ C를 대문자 C로 표시 할 수 있습니다. 편지의 경우에도 마찬가지입니다. 다른 캐릭터의 Shift경우 효과가있을 수 있습니다.)

Ctrl-를 누르면 CASCII 테이블에서 대문자 위치 아래 64 (ASCII 테이블에서 소문자 위치보다 96 이하) 인 ASCII 코드를 보냅니다. 따라서 Ctrlc(소문자)를 누르면 ASCII 코드 3 (대문자 C의 ASCII 코드 67 보다 64가 작음)이 전송 됩니다. 많은 환경 에서 숫자 키패드 Alt를 누른 상태 3에서 눌렀다가 ( 3키 를 놓은 다음 키 를 놓음 Alt) 동일한 효과를 얻을 수 있습니다.

^ C와 관련하여 ^는 ” Ctrl“키 의 잘 알려진 축약 형입니다 . 마찬가지로 M-는 ” Alt“키 의 줄임말입니다 . 예 M은 잡고 입력 할 수있는 단어 “메타”의 약자 Alt를 눌러 다음, 또는 때때로 온다 무엇이든 누르면 Esc(및 해제 Esc) 한 후 다음 온다 무엇이든 누르면. “Control Key”에 대한 Wikipedia의 기사 : “Notation”섹션에서는 이를 “전통 표기법”으로 설명합니다. 이것은 Caret Notation ( Caret notation에 관한 Wikipedia의 기사 , Unix StackExchange : Caret Notation에 대한 ryvnf의 질문 )으로도 알려져 있습니다.

마지막 질문과 관련하여 명령 셸은 캐럿이되는 것을 “해석”하지 않습니다. 즉, 껍질은 아무것도 읽지 않고 캐럿이라고 생각합니다. 일어나고있는 일은 쉘이 출력에 잘 알려진 캐럿 표기법을 사용하고 있다는 것입니다. 또 다른 예로, 잘 알려진 호출기 인 “less”는 다음을 실행하여 캐럿 표기법을 사용합니다.dd if=/dev/zero bs=64 count=1 | less

“nano”텍스트 편집기는 온라인 도움말에서 ^ G, 일명 Ctrl-를 누른 후 표시되는 전체 온라인 도움말을 포함하여 캐럿 표기법을 사용합니다 g.