Vous pouvez déterminer la séquence de caractères émise par une touche en appuyant sur Ctrl- vsur la ligne de commande, puis en appuyant sur la touche qui vous intéresse. Sur mon système pour F12, je reçois ^[[24~. Le ^[représente Esc. Différents types de terminaux ou d'émulateurs de terminaux peuvent émettre des codes différents pour la même clé.
À une invite Bash, vous pouvez entrer une commande comme celle-ci pour activer la macro clé afin que vous puissiez l'essayer.
bind '"\e[24~":"foobar"'
Maintenant, lorsque vous appuyez sur F12, vous obtenez "foobar" sur la ligne de commande prêt pour une édition ultérieure. Si vous souhaitez qu'une touche pour saisir une commande immédiatement, vous pouvez ajouter une nouvelle ligne:
bind '"\e[24~":"pwd\n"'
Maintenant, lorsque vous appuyez sur F12, vous obtenez le répertoire actuel affiché sans avoir à appuyer sur Enter. Que faire si vous avez déjà tapé quelque chose sur la ligne et que vous utilisez ce qui s'exécute automatiquement? Cela pourrait devenir compliqué. Cependant, vous pouvez effacer la ligne dans le cadre de votre macro:
bind '"\e[24~":"\C-k \C-upwd\n"'
L'espace permet de s'assurer que le Ctrl- ua quelque chose à supprimer pour empêcher la cloche de sonner.
Une fois que vous avez fait fonctionner la macro comme vous le souhaitez, vous pouvez la rendre persistante en l'ajoutant à votre ~/.inputrcfichier. Il n'y a pas besoin de la bindcommande ou de l'ensemble extérieur de guillemets simples:
"\e[24~":"\C-k \C-upwd\n"
Éditer:
Vous pouvez également créer une liaison de clé qui exécutera quelque chose sans perturber la ligne de commande actuelle.
bind -x '"\eW":"who"'
Ensuite, pendant que vous tapez une commande qui nécessite un nom d'utilisateur, par exemple, et que vous avez besoin de connaître les noms des utilisateurs qui sont connectés, vous pouvez appuyer sur Alt- Shift- Wet la sortie de whosera affichée et l'invite sera réémise avec votre commande partielle intacte et le curseur à la même position dans la ligne.
Malheureusement, cela ne fonctionne pas correctement pour les clés telles que celles F12qui produisent plus de deux caractères. Dans certains cas, cela peut être contourné.
La commande ( whodans ce cas) peut être n'importe quel exécutable - un programme, un script ou une fonction.