如何删除 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

是没有所见即所得。我所做的一切都会导致

bash -p 显示

"x\000": self-insert

我不能请你帮忙,因为你没有这样一个损坏的外壳。

(我没有勇气猜测这是否是 bash 的又一疯狂)

问候

安东·韦塞尔

答案1

解决办法是

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

问题为什么

 bind '"x":self-insert'

再次导致 bash -p 显示

"x\000": self-insert

尚未解决。原因是我没有在这个命令中按字面输入“x”,而是以八进制或十进制输入(在十六进制中它无法工作,因为涉及“x”)。

我正在尝试如何以十进制插入“x”。

相关内容