일부 inputrc 문자열을 grep할 수 없습니다.

일부 inputrc 문자열을 grep할 수 없습니다.

bind -p |grep -E "\\e.\":"일하다

하지만

bind -p |grep -E "\\e\\C-.\":"작동 안함

여러 조합을 시도해봤지만

답변1

정규식에서 큰따옴표로 묶인 문자열을 사용하고 있으므로 일치시키려는 각 리터럴 백슬래시의 이스케이프를 탈출하려면 추가 백슬래시를 추가해야 합니다. 이는 쉘이 큰따옴표로 묶인 문자열의 백슬래시를 해석하기 때문입니다.

bind -p | grep "\\\e.\":"
bind -p | grep "\\\e\\\C-.\":"

-E( 귀하의 정규식이 확장 정규식이 아니기 때문에 이는 필요하지 않습니다.)

또는 작은따옴표를 사용하여 이 작업을 수행하는 것이 좋습니다.

bind -p | grep '\\e.":'
bind -p | grep '\\e\\C-.":'

쉘은 원래 명령줄 인수를 "\\e\\C-.\":"\e\C-.":같은 정규식으로 해석합니다 eC.-":.

원래 표현식 문자열은 "\\e.\":"정규 표현식에 해당하므로 '유효'합니다 e.":. 그러나 이전 리터럴 백슬래시와 일치시키려고 시도하지는 않습니다 e.


[\]대체 표현을 사용한 대체 표현 \\:

bind -p | grep '[\]e.":'
bind -p | grep '[\]e[\]C-.":'

또는 리터럴 문자열을 grep하려면 with를 \e\C-사용하여 정규식 대신 "고정 문자열"로 패턴을 사용하도록 합니다.grep-F

bind -p | grep -F '\e\C-'

관련 정보