在bash中,如何将一个功能键绑定到一个命令?

前端之家收集整理的这篇文章主要介绍了在bash中,如何将一个功能键绑定到一个命令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
示例:我想绑定F12键到命令echo“foobar”,这样每次我点击F12的消息“foobar”将被打印到屏幕。理想情况下,它可以是任何任意shell命令,而不仅仅是内置。怎么会这样?
你可以通过在命令行按Ctrl-v,然后按下你感兴趣的键来确定一个键发出的字符序列。在我的系统上为F12,我得到^ [[24〜。 ^ [表示Esc。不同类型的终端或终端仿真器可以为相同的密钥发射不同的代码

在Bash提示符下,您可以输入这样的命令来启用键宏,以便您可以尝试它。

bind '"\e[24~":"foobar"'

现在,当你按F12,你会在命令行上获得“foobar”,准备进一步编辑。如果你想要一个键盘立即输入一个命令,你可以添加一个换行符:

bind '"\e[24~":"pwd\n"'

现在,当您按F12时,将显示当前目录,而不必按Enter键。如果你已经在线上键入了某些东西,并且使用这个自动执行了什么?它可能会弄乱。但是,您可以清除该行作为宏的一部分:

bind '"\e[24~":"\C-k \C-upwd\n"'

空格确保Ctrl-u有一些东西要删除,以保持铃声响起。

一旦你已经按照你想要的方式工作,你可以通过将它添加到〜/ .inputrc文件来使它持久化。没有必要使用bind命令或外部的单引号:

"\e[24~":"\C-k \C-upwd\n"

编辑:

您还可以创建一个键绑定,将执行某些东西,而不打扰当前的命令行。

bind -x '"\eW":"who"'

然后,当您键入需要用户名的命令时,例如,您需要知道登录用户名称,您可以按Alt-Shift-W,将显示谁的输出提示将重新发出您的部分命令完整和光标在同一位置的行。

不幸的是,对于输出超过两个字符的F12等键,这不能正常工作。在某些情况下,这可以解决

命令(在这种情况下是谁)可以是任何可执行文件 – 程序,脚本或函数

猜你在找的Bash相关文章