원격 컴퓨터의 내 Linux 계정에는 다음과 같은 사전 정의가 제공됩니다. .inputrc
"\e[1~": beginning-of-line
"\e[4~": end-of-line
“\e[5~”: history-search-backward
“\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on
나는 GNU bash는 설명서를 읽고 있습니다 주제에를 ,하지만 난 문자 시퀀스가 무엇인지 설명하는 섹션을 찾을 수 없어 \e[1~
, \e[5C
, \e\e[D
, 등을 의미합니다.
내가 어딘가에 읽을 생각 \e
수단 meta character
(내가 생각하는 Alt
내 키보드),하지만 무슨 일이 다른 제어 문자를 이해하지 못하고 [
, ~
, 5D
등을 의미한다.
누구든지 주제에 대한 좋은 참조를 알고 있습니까?
답변
이들은 영숫자가 아닌 다양한 키를 “터미널”키보드에서 누를 때 전송 되는 ANSI 제어 코드 이스케이프 시퀀스 입니다.
\ e는 ASCII “ESCAPE”문자를 의미합니다 (8 진수 033 16 진수 1B 10 진수 27). CSI (명령 시퀀스 소개)의 일부입니다.
Escape [ 2 ~
VT220 (또는 이후) 터미널 에서 “삽입”이라고 표시된 키를 누를 때 전송되는 문자 시퀀스 입니다.
이러한 많은 규약은 xterm 및 Linux 콘솔 / 쉘과 같은 소프트웨어에 채택되었으며 종종 호환되지 않는 다양한 방법으로 확장되었습니다.
bash의 READLINE 함수에서이 시퀀스를 사용하는 방법은 readline 설명서 페이지 에 설명되어 있습니다.
두 번째 형식 인 "keyseq": function-name 또는 macro에서 keyseq는 다릅니다 전체 키 시퀀스를 나타내는 문자열에서 위의 키 이름에서 큰 따옴표 안에 순서를 배치하여 지정하십시오. 일부 GNU 다음 예제와 같이 Emacs 스타일 키 이스케이프를 사용할 수 있지만 기호 문자 이름이 인식되지 않습니다. "\ Cu": 범용 인수 "\ Cx \ Cr": 다시 읽기 초기화 파일 "\ e [11 ~": "기능 키 1"
어떤 키보드 키에 해당하는 이스케이프 시퀀스 목록을 얻으려면 infocmp -L -1
또는infocmp -L -1 xterm