我怎么用!!作为我的.inputrc键盘绑定的一部分?

时间:2015-09-16 18:31:47

标签: bash readline

在Bash中,我想在我的.inputrc中创建一个绑定,它使用!!内置来重复上一个命令。但这似乎没有适当地扩展!!

bind -x '"\C-t": echo $(!!)'

当我调用上面的绑定( Ctrl + t )时,我得到了这个:

-bash: !!: command not found

同样更简单

 bind -x '"\C-t": echo !!'

收益率

!!

而不是实际的命令。 显然,我的真实用例比这个例子更具实质性,这只是问题的一个例子。

修改

这个问题与echo "#!" fails -- "event not found"没有任何关系,据说这是我的重复。这个问题涉及由于引用问题或缺乏历史而导致!*普遍失败的普遍失败。另一方面,我的问题非常特定于在.inputrc文件(或可能是别名)中使用的上下文,其中有一组不同的因素发挥作用。在我的常规命令行上,所谓的"爆炸扩展"一直很好。只有在出现问题的特殊情况下,才会出现这个问题。

2 个答案:

答案 0 :(得分:0)

"\C-t": "fc -s\n"

fc -s重新执行最后一个命令,fc也是内置命令:

$ type fc
fc is a shell builtin

答案 1 :(得分:0)

好吧,看起来壳引用有些奇怪。

这不起作用

bind -x '"\C-l": "!! \n"'

但是把它放在.inputrc中

"\C-l": "!! \n"

不明白为什么前者不起作用,但至少后者不起作用。

编辑:好的,明白了。显然,在cmd行上定义时不需要“-x”。所以我们可以简单地写一下

bind '"\C-l": "!! \n"'

使用-x告诉bind不要干扰你已经键入的内容(几乎就像一个原始ncurses近似的模态窗口!)这不是我所追求的。感谢In bash, how do I bind a function key to a command?对此见解的接受答案!