Comment puis-je rappeler une commande spécifique de l'historique des commandes, sans l'exécuter

13

Par exemple, en bash, je peux taper !xyzqui exécutera la dernière commande que j'ai tapée en commençant par xyz.

Comment afficher la dernière commande que j'ai tapée en commençant par xyzmais sans l'exécuter?
par exemple pour que je puisse changer les paramètres avant l'exécution ....

Mtl Dev
la source

Réponses:

20

Vous pouvez le faire comme ceci: À l'invite de commande, appuyez sur Ctrl+ r, puis tapez la commande que vous souhaitez rappeler, dans votre cas xyz. Cela vous montrera la commande complète sans l'exécuter.

user2249251
la source
1
Plus utile que la !notation, car vous pouvez appuyer plusieurs fois sur Ctrl-r pour parcourir davantage l'historique de correspondance. Lorsque vous arrivez au bon endroit, vous pouvez essayer d'exécuter non pas avec Enter mais avec Ctrl-o pour beaucoup de profit.
kubanczyk
12

Essayez !xyz:p; il rappellera la commande en haut de l'historique sans l'exécuter, donc par exemple la flèche vers le haut peut y accéder immédiatement pour une édition interactive.

En passant, j'ai l'habitude de le faire lors du rappel de commandes avec une expression rationnelle qui pourrait éventuellement creuser quelque chose de dommageable, depuis qu'un hâte !r, destiné à rappeler la rsync ...commande la plus récente , a reculé et exécuté un rm *qui avait été poussé vers la pile plus récemment que le rsync.

Chapelier Fou
la source
Merci, c'est une bonne pratique. J'ai fait de même avec rm -rf ./*jamais été aussi reconnaissant pendant une période. Pour info !xyz:p, cela a fonctionné, merci, mais a nécessité quelques touches supplémentaires que la solution ctrl-r.
Mtl Dev
@MtlDev yes; Je trouve que la solution ^ R fonctionne mieux pour les EMACSgens, tandis que le! -Path fonctionne mieux pour les violateurs comme moi.
MadHatter
1
  1. Exécutez la commande suivante. Il fera écho à la dernière commande exécutée. vous pouvez copier et modifier la commande. Cette commande a été testée dans debian.

    histoire | queue -2 | grep -v histoire | coupe -d '' -f4-

  2. Ou Appuyez et maintenez ctrl + R et tapez la lettre de départ de votre dernière commande. Il répertorie les commandes que vous avez exécutées précédemment en fonction de votre saisie. Une fois qu'il affiche la commande souhaitée, appuyez simplement sur la flèche droite pour sélectionner cette commande.

vembutech
la source
1
La première commande est tellement fluide !! Je pense qu'il est plus rapide de simplement s'occuper de la commande dans l'histoire que d'écrire tout cela ^ __ ^
Grajdeanu Alex.
1

Si la recherche d'historique inversée a échoué, effectuez l'une des opérations suivantes:

$ history | grep WHAT_YOU_LOOK_FOR

Ou:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
178024
la source