Bash 키 바인딩 "x\000"을 제거하는 방법: 자체 삽입

Bash 키 바인딩 "x\000"을 제거하는 방법: 자체 삽입

bash -p 쇼

"x\000": self-insert

어쩌면 철자 오류 때문일 수도 있습니다.

수정하려면 일반 바인딩 명령을 사용하세요.

bind "x":self-insert

또는

bind '"x":self-insert'

효과가 없습니다. 그래서 나는 다음을 통해 잘못된 바인딩을 제거하려고했습니다.

bind -r "x\000"

아무런 영향을 미치지 않습니다.

나는 따옴표와 백슬래시, $'\x00' 등을 사용하여 모든 변형('\0')을 시도했습니다.

bind -r "x"'\0'

성공하지 못했습니다.

하지만 처음으로 해결책은 다음과 같습니다.

bind -r ' "x" "$(echo -n -e "\x00")" '

두 번째 동일한 경우에는 작동하지 않습니다.

두 번째 경우는 일반 명령 때문입니다.

bind '"x":self-insert'

다시 bash -p가 표시됩니다.

"x\000": self-insert

정말 확실한 방법은 없을까요?

=====

== 수정됨 2022.12.08 16:05

고마워요. 하지만 물건을 잃지 않도록 셸을 닫지 않는 방법이 필요합니다.

. inputrc 또는 기타 시작 파일은 영향을 받지 않습니다.

내 답변에서 제안한 솔루션을 사용하면 원치 않는 바인딩이 성공적으로 제거되었습니다.

이제 문제는 새로운 올바른 바인딩을 만드는 방법입니다.

심지어

bind "$(echo -n -e "\0170")":self-insert

WYSIWYG가 없습니다. 내가 하는 모든 일은 다음으로 이어진다.

bash -p 쇼

"x\000": self-insert

당신은 그런 손상된 케이스가 없기 때문에 도움을 요청할 수 없습니다.

(나는 이것이 또 다른 배쉬 광기인지 추측할 용기가 없습니다)

인사

안톤 베셀

답변1

해결책은

bind -r "x" "$(echo -n -e "\x00")"

왜 질문하세요?

 bind '"x":self-insert'

다시 bash -p가 표시됩니다.

"x\000": self-insert

아직 해결되지 않았습니다. 그 이유는 이 명령에 문자 그대로 "x"를 입력하지 않고 8진수 또는 10진수로 입력하기 때문입니다(16진수에서는 "x"가 포함되어 있으므로 작동하지 않음).

십진수에 "x"를 삽입하는 방법을 시도 중입니다.

관련 정보