J'utilise !n où (n) est le numéro de ligne pour exécuter une ligne dans le fichier historique que je veux exécuter à l'invite de commande que je trouve via history|less.
Mais il y a un événement d'historique de ligne de commande que je souhaite modifier manuellement. Comment puis-je insérer dans la ligne de commande un contenu d'événements d'historique sans qu'il ne s'exécute réellement afin que je puisse modifier puis appuyer sur retour ?
Cordialement,
Réponse acceptée :
Pour demander que la commande soit imprimée plutôt qu'exécutée après la substitution de l'historique, ajoutez le :p
modificateur, par ex. !42:p
. La commande résultante sera également entrée dans l'historique, vous pouvez donc appuyer sur Haut pour le modifier.
Si vous avez le histverify
jeu d'options (shopt -s histverify
), vous aurez toujours la possibilité de modifier le résultat des substitutions d'historique.
Le fc
builtin donne un accès limité à l'expansion de l'historique (pas de désignateurs de mots) et vous permet de modifier une commande précédente dans un éditeur externe.
Vous pouvez utiliser !prefix
pour faire référence à la dernière commande commençant par prefix
, et !?substring
pour faire référence à la dernière commande commençant par substring
. Lorsque vous savez ce que vous recherchez, cela peut vous faire gagner beaucoup de temps sur history | less
.
Une autre façon de rechercher dans l'historique précédent est la recherche incrémentielle :appuyez sur Ctrl +R et commencez à entrer une sous-chaîne de ce que vous recherchez. Appuyez sur Ctrl +R pour aller à l'occurrence précédente de la chaîne de recherche jusqu'à présent et Ctrl +S si vous êtes allé trop loin. La plupart des touches autres que Ctrl +R , Ctrl +S , Retour arrière et les caractères ordinaires terminent la recherche incrémentielle et ont leur effet habituel (par exemple, les touches fléchées pour déplacer le curseur dans la ligne que vous avez atteinte, Entrée pour exécuter la commande).