Você pode usar o comando incorporado, bind
para mapear um atalho de teclado para que ele execute um script de comando / shell.
Exemplo
Digamos que queremos executar o comando pwd
quando pressionarmos a tecla F12 .
$ bind '"\e[24~":"pwd\n"'
Agora, quando eu pressionar F12 no meu prompt, $
:
$ pwd
/home/saml
Como determinar os atalhos de teclado
Você pode usar a técnica a seguir para determinar o código de escape de um determinado atalho de teclado. Na maioria dos sistemas, pressione Ctrl + V , solte e pressione a tecla para a qual deseja o código. Existem alguns outros sistemas que trabalharão com M em vez de V
Exemplo
Pressionando Ctrl + V , libere as teclas Ctrl e V e finalmente pressione F12 em uma janela de terminal retorna isto:
$ ^[[24~
Esta saída pode ser interpretada da seguinte forma, ^[
é a tecla Esc . Então, quando queremos especificar essa chave específica usando o comando bind
, precisamos usar um \e
para denotar a tecla Esc seguida de todo o restante acima. Então, o comando bind
tem esta aparência:
$ bind '"\e[24~":"....."'
Executando um comando no meio
Você também pode usar o bind -x
para configurar atalhos de teclado que executarão comandos enquanto você estiver digitando algo no prompt, e a saída desses comandos será exibida, mas o que você estiver digitando em o prompt permanecerá intacto.
$ bind -x '"\eW":"..."'
NOTA: Este método só funciona com atalhos de teclado que produzem 1 caractere, então F12 não funcionará aqui.
Exemplo
Vamos codificar o atalho de teclado Alt + Deslocar + W .
$ bind -x '"\eW":"who"'
Digamos que eu esteja digitando o comando finger
:
$ finger
Agora eu toquei no atalho de teclado Alt + Deslocamento + 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 é que bind
está executando o comando definido, who
, obtendo sua saída e inserindo-a na frente do prompt. Se você repetir, verá o que está acontecendo, aqui está a saída de mim, 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
Seu problema
Portanto, uma ideia seria usar o método bind -x
acima e cat
para exibir esse arquivo de texto no seu prompt:
$ bind -x '"\eW":"cat someinfo.txt"'
Agora, quando executo comandos, posso ver esse arquivo da seguinte forma:
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 comando finger
acima.