GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter un script dans Shell lorsqu'une touche de raccourci est enfoncée ?

Comment puis-je exécuter un script dans Shell lorsqu'une touche de raccourci est enfoncée.

Essentiellement, ce dont j'ai besoin, c'est que lorsque vous appuyez sur une touche de raccourci, le script doit lire à partir d'un fichier et afficher ce contenu dans le terminal.

Réponse acceptée :

Vous pouvez utiliser la commande intégrée, bind pour mapper un raccourci clavier afin qu'il exécute un script de commande/shell.

Exemple

Disons que nous voulons exécuter la commande, pwd , lorsque nous appuyons sur F12 clé.

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

Maintenant, quand j'appuie sur F12 à mon invite, $ :

$ pwd
/home/saml

Déterminer les raccourcis clavier

Vous pouvez utiliser la technique suivante pour déterminer le code d'échappement d'un raccourci clavier donné. Sur la plupart des systèmes, appuyez sur Ctrl + V , relâchez, puis appuyez sur la touche pour laquelle vous souhaitez obtenir le code. Il existe d'autres systèmes avec lesquels il fonctionnera M au lieu de V

Exemple

En appuyant sur Ctrl + V puis relâchez les deux Ctrl et V et enfin appuyez sur F12 dans une fenêtre de terminal renvoie ceci :

$ ^[[24~

Cette sortie peut être interprétée comme suit, ^[ est le Echap clé. Ainsi, lorsque nous voulons spécifier cette clé particulière en utilisant le bind commande nous devons utiliser un \e pour désigner le Esc clé suivie de tout le reste d'en haut. Donc le bind la commande ressemble à ceci :

$ bind '"\e[24~":"....."'

Exécuter une commande au milieu

Vous pouvez également utiliser bind -x pour configurer des raccourcis clavier qui exécuteront des commandes pendant que vous êtes en train de taper quelque chose à l'invite, et la sortie de ces commandes sera affichée, mais ce que vous avez tapé à l'invite restera intact.

$ bind -x '"\eW":"..."'

REMARQUE : Cette méthode ne fonctionne qu'avec les raccourcis clavier qui génèrent 1 caractère, donc F12 ne fonctionnera pas ici.

Exemple

Appelons le raccourci clavier Alt + Maj + W .

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

Supposons que je tape la commande finger :

$ finger

Maintenant, j'appuie sur le raccourci clavier Alt + Maj + 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

Ce qui se passe est bind exécute la commande définie, who , en prenant sa sortie et en l'insérant devant l'invite. Si vous le répétez, vous verrez ce qui se passe, voici le résultat de ma frappe 2 fois :

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

Votre problème

Donc une idée serait d'utiliser le bind -x méthode ci-dessus et cat pour afficher ce fichier texte à votre invite :

$ bind -x '"\eW":"cat someinfo.txt"'

Maintenant, lorsque j'exécute des commandes, je peux voir ce fichier comme suit :

This is text from some 
multi-line file reminding
me how to do some 
stuff
$ finger 

La sortie du fichier someinfo.txt s'affiche au-dessus de mon finger commande ci-dessus.

Connexe :Validation d'une liste de sélection HTML à l'aide de Java Script ?

Références

  • Dans bash, comment lier une touche de fonction à une commande ?

Linux
  1. Comment créer un fichier temporaire en script shell ?

  2. Détecter si la touche est enfoncée à partir du script ?

  3. Comment déclencher un événement dans le script Shell lorsqu'un périphérique USB est supprimé ?

  4. Comment exécuter des commandes dans Gnuplot à l'aide d'un script Shell ?

  5. Comment exécuter un script shell lorsqu'un fichier ou un répertoire change ?

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment utiliser des variables dans les scripts Shell

Comment exécuter une commande Shell avec Python

Comment créer des scripts shell

Comment exécuter une commande dans un script shell ?

Comment exécuter un fichier sans extension .sh dans le shell