Respostas:
Você pode usar o comando interno bind
para mapear um atalho de teclado para que ele execute um script de comando / shell.
Digamos que queremos executar o comando pwd
, quando pressionamos a F12tecla.
$ bind '"\e[24~":"pwd\n"'
Agora, quando eu pressionar F12o meu alerta, $
:
$ pwd
/home/saml
Você pode usar a seguinte técnica para determinar o código de escape para um determinado atalho de teclado. Na maioria dos sistemas, pressione Ctrl+ V, solte e, em seguida, pressione a tecla para a qual deseja o código. Existem alguns outros sistemas com os quais ele trabalhará, em Mvez deV
Pressionar Ctrl+ Ve soltar ambos Ctrle, Vfinalmente, pressionar F12em uma janela do terminal, retorna isso:
$ ^[[24~
Esta saída pode ser interpretada da seguinte forma, ^[
é a Escchave. Portanto, quando queremos especificar essa chave específica usando o bind
comando, precisamos usar a \e
para indicar a Escchave seguida por tudo o mais acima. Portanto, o bind
comando fica assim:
$ bind '"\e[24~":"....."'
Também é possível bind -x
configurar atalhos de teclado que executam comandos enquanto você digita algo no prompt, e a saída desses comandos é exibida, mas o que você digitou no prompt permanecerá intacto.
$ bind -x '"\eW":"..."'
NOTA: Este método funciona apenas com atalhos de teclado que geram 1 caractere, portanto F12, não funcionará aqui.
Vamos usar o atalho de teclado Alt+ Shift+ W.
$ bind -x '"\eW":"who"'
Digamos que estou digitando o comando finger
:
$ finger
Agora clico no atalho do teclado 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
O que está acontecendo bind
é executar o comando definido who
, pegando sua saída e inserindo-a na frente do prompt. Se você repetir, verá o que está acontecendo, eis uma saída minha batendo duas vezes:
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
Portanto, uma idéia seria usar o bind -x
método acima e cat
exibir esse arquivo de texto quando solicitado:
$ bind -x '"\eW":"cat someinfo.txt"'
Agora, quando executo comandos, posso ver este arquivo da seguinte maneira:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
A saída do arquivo someinfo.txt
está sendo exibida acima do meu finger
comando acima.
echo '
(espaço após as aspas simples), pressione Ctrl + v, a tecla desejada e, em seguida, espaço, aspas simples ... conforme descrito aqui . Exemplo:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'
, mas depois que eu fechei o terminal, a coisa parece ser redefinida e todas as teclas de atalho são ido