在Bash中,我想在我的.inputrc
中创建一个绑定,它使用!!
内置来重复上一个命令。但这似乎没有适当地扩展!!
bind -x '"\C-t": echo $(!!)'
当我调用上面的绑定( Ctrl + t )时,我得到了这个:
-bash: !!: command not found
同样更简单
bind -x '"\C-t": echo !!'
收益率
!!
而不是实际的命令。 显然,我的真实用例比这个例子更具实质性,这只是问题的一个例子。
修改
这个问题与echo "#!" fails -- "event not found"没有任何关系,据说这是我的重复。这个问题涉及由于引用问题或缺乏历史而导致!*
普遍失败的普遍失败。另一方面,我的问题非常特定于在.inputrc
文件(或可能是别名)中使用的上下文,其中有一组不同的因素发挥作用。在我的常规命令行上,所谓的"爆炸扩展"一直很好。只有在出现问题的特殊情况下,才会出现这个问题。
答案 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?对此见解的接受答案!