Comment puis-je ajouter une commande à l'historique Bash sans l'exécuter?


32

De temps en temps, il serait utile d'ajouter une commande directement à l'historique dans Bash sans l'exécuter réellement. Jusqu'à présent, la chose fermée que j'ai trouvée est d'ajouter un #devant et de frapper le retour. Y a-t-il de meilleures façons?

Réponses:


39

history -s commander


Je n'ai jamais connu cette fonctionnalité. Je ne peux pas penser à une utilisation immédiate, mais c'est bon à savoir.
Doug Harris

7
Savez-vous s'il est possible d'exécuter une commande similaire à celle-ci à partir d'un script? J'ai un script ./resize-images.shdont la dernière ligne indique une commande que vous devez exécuter pour annuler les modifications, il serait vraiment utile si à la place le script pouvait ajouter la commande à mon historique, alors je frappais juste up-entersi j'avais besoin d'annuler
Ben Page

1
@BenPage: Regardez les deux réponses ici: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot

9

history -s commander

Vous pouvez même lier une touche pour le faire pour vous. Vous pouvez le saisir à une invite Bash:

bind '"\C-q": "\C-a history -s \C-j"'

ou ajoutez ceci à votre ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

vous pouvez alors taper quelque chose et appuyer sur Ctrl- qet il sera ajouté à l'historique sans être exécuté. L'espace avant « histoire » provoque la historycommande elle - même à ne pas être ajouté à l'histoire si votre HISTCONTROLvariable contient ignorespaceou ignoreboth. Une autre frappe pourrait être choisie à la place de "\ Cq".


3

Il est difficile de trouver quelque chose de plus court qu'une "commande" à un caractère, nous devons donc vraiment aller au niveau de la frappe. Avec ma configuration bash et un clavier américain, ce que vous faites maintenant prend:

  1. Aller au début de la ligne CTRLA:: +1 instruction, +2 touches
  2. Ajouter #(besoins SHIFT): +1 instruction, +2 pression de touche
  3. L'ajouter à l'historique avec ENTER: +1 instruction, +1 touche

donc au total 3 instructions, 5 touches.

L'utilisation ALT#fait de même dans 1 instruction, 2 touches.

YMMV selon la disposition de votre clavier et la configuration de bash.


3
Le problème n'est pas le nombre de touches, mais cette "#commande" est stockée dans l'historique, au lieu de la "commande" voulue.
Grumbel

1
C'est bien que "#command" soit stocké dans le fichier historique car il vous permet de savoir que la commande n'a pas été réellement exécutée. Cela pourrait être utile si vous vouliez plus tard revoir les commandes que vous avez entrées afin de résoudre un problème.
Marnix A. van Ammers

2
@Grumbel, @Marnix: D'accord, je n'ai pas répondu à la question à la lettre mais j'ai montré comment rendre ce qu'il fait maintenant encore plus rapide. Personnellement, je pense que l'utilisation #commandest beaucoup plus rapide que history -s command, et aussi très facile à utiliser si vous mappez history-search-backward/-forwardcorrectement. Mais c'est une question de goût.
Benjamin Bannier
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.