Vous pouvez déterminer la séquence de caractères émise par une touche en appuyant sur Ctrl - v à la ligne de commande, puis en appuyant sur la touche qui vous intéresse. Sur mon système pour F12 j'obtiens ^[[24~
. Le site ^[
représente Esc . Différents types de terminaux ou d'émulateurs de terminaux peuvent émettre des codes différents pour la même touche.
À l'invite de Bash, vous pouvez entrer une commande comme celle-ci pour activer la macro de touches et l'essayer.
bind '"\e[24~":"foobar"'
Maintenant, quand vous appuyez sur F12 vous obtiendrez "foobar" sur la ligne de commande, prêt à être modifié. Si vous voulez qu'une touche entre immédiatement dans une commande, vous pouvez ajouter une nouvelle ligne :
bind '"\e[24~":"pwd\n"'
Maintenant, quand vous appuyez sur F12 vous obtiendrez l'affichage du répertoire actuel sans avoir à appuyer sur Enter . Et si vous avez déjà tapé quelque chose sur la ligne et que vous utilisez ce qui s'exécute automatiquement ? Cela peut 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 - u a quelque chose à supprimer pour empêcher la cloche de sonner.
Une fois que la macro a fonctionné comme vous le souhaitez, vous pouvez la rendre persistante en l'ajoutant à votre fichier ~/inputrc
fichier. Il n'y a pas besoin de l'option bind
ou l'ensemble extérieur des guillemets simples :
"\e[24~":"\C-k \C-upwd\n"
Edit :
Vous pouvez également créer une liaison de touche 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 - W et la sortie de who
sera affiché 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 des clés telles que F12 qui sortent plus de deux caractères. Dans certains cas, cela peut être contourné.
La commande ( who
dans ce cas) pourrait être n'importe quel exécutable - un programme, script ou une fonction.