shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] "trap" nas setas do teclado


From: Alfredo Casanova
Subject: Re: [shell-script] "trap" nas setas do teclado
Date: Fri, 04 Mar 2016 18:54:56 +0000

Como eu disse no meu e-mail, já tinha visto o comando bind. O problema é que ele entra na fila de execução de comandos, e não é executado independente do que está rodando.

On Fri, Mar 4, 2016 at 12:11 PM Daniel Gusmão address@hidden [shell-script] <address@hidden> wrote:
 


Veja se isso ajuda...

http://unix.stackexchange.com/questions/89622/how-to-execute-a-script-in-shell-when-a-shortcut-key-is-pressed




You can use the builtin command, bind to map a keyboard shortcut so that it executes a command/shell script.

Example

Say we want to run the command, pwd, when we press the F12 key.
$ bind '"\e[24~":"pwd\n"'
Now when I press F12 at my prompt, $:
$ pwd
/home/saml

Determining keyboard shortcuts

You can use the following technique to determine the escape code for a given keyboard shortcut. First press the keys Ctrl + M, then press the key that you want the code for.

Example

Pressing Ctrl + M + F12 in a terminal window returns this:
$ ^[[24~
This output can be interpreted as follows, ^[ is the Esc key. So when we want to specify this particular key using the bind command we need to use a \e to denote the Esc key followed by everything else from above. So the bind command looks like this:
$ bind '"\e[24~":"....."'

Executing a command in the middle

You can also make use of bind -x to setup keyboard shortcuts that will run commands while you're in the middle of typing something at the prompt, and these commands' output will be displayed, but what ever you were typing at the prompt will remain intact.
$ bind -x '"\eW":"..."'
NOTE: This method only works with keyboard shortcuts that output 1 character, so F12 won't work here.

Example

Let's alias the keyboard shortcut Alt + Shift + W.
$ bind -x '"\eW":"who"'
Say I'm typing the command finger:
$ finger
Now I hit the keyboard shortcut 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
What's going on is bind is running the command defined, who, taking its output and inserting it in front of the prompt. If you repeat it you'll see what's going on, here's output from me hitting it 2 times:
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

Your problem

So one idea would be to use the bind -x method above and cat to display this text file at your prompt:
$ bind -x '"\eW":"cat someinfo.txt"'
Now when I run commands I can see this file like so:
This is text from some 
multi-line file reminding
me how to do some 
stuff
$ finger 
The output of file someinfo.txt is being displayed above my finger command above.

References




To: address@hidden
From: address@hidden
Date: Thu, 3 Mar 2016 21:50:56 +0000
Subject: [shell-script] "trap" nas setas do teclado



 

Existe alguma forma de eu executar comandos quando pressionar as setas do teclado (ou alguma combinação de teclas, como alt+P) durante a execução de um script?

achei o comando bind -x, mas ele só executa algo quando o comando anterior termina. Queria algo parecido com as interrupções com trap de control+c, control+z, mas em teclas específicas.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]