Answers:
您可以使用内置命令bind
来映射键盘快捷键,以便它执行命令/ shell脚本。
假设我们要pwd
在F12按键时运行命令。
$ bind '"\e[24~":"pwd\n"'
现在,当我按F12提示输入时$
:
$ pwd
/home/saml
您可以使用以下技术来确定给定键盘快捷键的转义代码。在大多数系统上,按Ctrl+ V,释放,然后按要为其输入代码的键。还有其他一些系统可以M代替V
按Ctrl+ V然后松开两Ctrl和V,最后按 F12在终端窗口返回此:
$ ^[[24~
这个输出可以解释如下,^[
是Esc关键。因此,当我们想使用bind
命令指定此特定键时,我们需要使用a \e
来表示该Esc键,然后是上面的所有其他内容。因此,bind
命令如下所示:
$ bind '"\e[24~":"....."'
您还可以利用bind -x
设置键盘快捷键,这些快捷键将在您在提示符下键入某些内容时运行命令,并且将显示这些命令的输出,但是您在提示符下键入的内容将保持不变。
$ bind -x '"\eW":"..."'
注意:此方法仅适用于输出1个字符的键盘快捷键,因此F12此处不起作用。
让我们给键盘快捷键Alt+ Shift+ 加上别名W。
$ bind -x '"\eW":"who"'
假设我正在输入命令finger
:
$ finger
现在我打的键盘快捷键Alt+ Shift+ W:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
发生的事情bind
是运行定义的命令who
,获取其输出并将其插入到提示的前面。如果重复一遍,您会看到发生了什么,这是我打了2次的输出:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
因此,一个想法是使用bind -x
上面的方法,并cat
在您的提示下显示此文本文件:
$ bind -x '"\eW":"cat someinfo.txt"'
现在,当我运行命令时,可以看到如下文件:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
文件的输出someinfo.txt
显示在我finger
上面的命令上方。
echo '
(单引号后的空间),然后按Ctrl + V,然后描述你想要的键,然后空格,单引号... 这里。示例:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'
但是在关闭终端后,事情似乎已重置并且所有热键都消失了