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")" '

2番目の同じ場合は動作しません。

2番目のケースは通常のコマンドによるものです。

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」が含まれているため動作しません)。

10進数に「x」を挿入する方法を試しています。

おすすめ記事