특수 문자 "^A", ^[, ^[[를 찾는 방법

특수 문자 "^A", ^[, ^[[를 찾는 방법

출력 바인딩 키를 사용하는 방법을 알고 있습니다 bindkey.

내가 grep뭐라도 말해 줄래?

$ bindkey | grep line
"^A" beginning-of-line
"^E" end-of-line
"^J" accept-line
"^K" kill-line
...

^[G그러나 나는 grep 하거나 기다릴 수 없습니다 ^[[A.

$ bindkey | grep ^[G
zsh: bad pattern: ^[G

또는 같은 키워드를 어떻게 사용하나요 grep?^[G^[[A

답변1

두 가지 질문: 셸의 특수 문자와 정규식의 특수 문자입니다.

여는 괄호는 [쉘의 파일 이름 확장 패턴에서 특별한 의미를 가지며, 이는 zsh가 이 오류에서 언급하는 것입니다. 문자 그대로 인용하라고 말할 수 있습니다. 작은따옴표나 큰따옴표 모두 괜찮지만 작은따옴표가 더 좋고 예외가 적습니다.

정규식에서 첫 번째 문자 ^는 패턴이 줄의 시작 부분에 고정되어 있음을 나타내며 [셸의 패턴과 유사한 특별한 의미를 갖습니다. 따라서 grep둘 다 리터럴로 처리되도록 지시해야 하며 , 이는 백슬래시로 이스케이프 처리하여 수행됩니다.

그래서:

bindkey | grep '\^\[G'

^A출력의 bindkey두 문자 ^(캐럿)와 (대문자 A) 는 A키 바인딩에서 값이 1인 제어 문자인 Ctrl-A로 표시됩니다. 이 캐릭터에 대한 파악은 다를 것입니다.

답변2

옵션을 사용 -F하고 따옴표를 사용하면 작동합니다.

~ % bindkey | grep -F '^[G'
"^[G" get-line

-F, --fixed-strings PATTERN을 줄 바꿈으로 구분된 고정 문자열 목록으로 해석하며, 둘 중 하나가 일치합니다. (-F는 POSIX에 의해 지정됩니다.)

답변3

정말로 제어 문자를 얻으려면 16진수 코드를 사용하세요. 예를 들어 탭은 다음과 같습니다.

grep -P '\x09'

또는

grep -P '\t'

목록 찾기여기.

관련 정보