2015-01-21 1 views
0

시퀀스에 대해/etc/inputrc를 사용하여 BASH의 명령에 키 입력의 일부 시퀀스를 매핑하려고합니다. 여기 상단 대답 :BASH 채색 및 입력에 대한 신비한 구문

How can I make bash tab completion behave like vim tab completion and cycle through matching matches?

사용자 "STH"는 "\ 전자 [Z는"시프트 탭에 대한 이스케이프 시퀀스이라고 말했다.

어떻게 이러한 이스케이프 시퀀스를 찾을 수 있습니까? 예를 들어, Alt + S 또는 Ctrl + S의 순서는 무엇입니까?

나는 또한 BASH 에코 색칠에서 이러한 시퀀스를 발견했습니다. 예 :

echo -e "a \e[0;31m B \e[0m k" 

흰색 'a'와 'k'사이에 (빨간색) B가 인쇄됩니다. 이 아케나는 무엇입니까? "\ e [0; 31m"은 무엇을 의미합니까? (적색, 분명히, 그러나 왜 "\ e [red]"와 같은 것이 아닌가?)

답변

2

키 입력이 경험적으로 생성하는 것을 찾으려면 cat을 실행 한 다음 키를 누릅니다 (아마도 처음으로 ctrl-v을 누르기 만하면됩니다).

\e은 "이스케이프"입니다.

나머지는 말단 제어 서열이다.

man terminfo을 참조하십시오. infocmp의 출력을 참조하십시오. 터미널의 역사에 대해 읽어보십시오.

인생의 다음 1 년에서 5 년을 잃고 세상을 매우 짜증나게하고 인터넷상의 모든 사람들이 (사실상) 항상 이런 상황에 처해 있음을 알게됩니다.

+1

다음은 약간 더 나은 경험적 도구입니다. 'IFS = read -rsN1 c; printf'% 02X '' '' "$ c"; done'. 다음은 Linux/xterm 정보입니다. http://man7.org /linux/man-pages/man4/console_codes.4.html 다음은 좀 더 자세한 내용입니다 : http://invisible-island.net/xterm/ctlseqs/ctlseqs.html – rici

+0

@rici 감사합니다. 이스케이프 시퀀스 비교를 위해 여전히 유용하지만'printf '% q''는 아마도 여기'cat'보다 좋을 것입니다.) printf에 대한 논점에서 그 주요 인용문을 가진 마법은 무엇입니까? –

+1

printf는 두 번째 문자의 문자 코드를 인용 부호 또는 큰 따옴표로 시작하는 인수의 숫자 형식으로 출력합니다 ("문자열 형식 지정자가 아닌 인수는 C로 처리됩니다. 상수 (plus) 또는 빼기 (-) 기호가 허용되며, 선행 문자가 작은 따옴표 또는 큰 따옴표 인 경우 그 값은 다음 문자의 ASCII 값입니다. " – rici