Toutes mes excuses, ce titre n'est pas le plus élégant que j'ai jamais conçu.
Mais je suppose que beaucoup de gens se seront demandé cela, et ma question est peut-être une dupe ... tout ce que je peux dire, c'est que je ne l'ai pas trouvée.
Quand je parle de "défilement", je parle de la touche "Flèche haut" du clavier, qui vous permet de faire défiler l'historique, en commençant par la commande la plus récente.
Donc, vous trouvez une commande peut-être 30 commandes en arrière ... et vous l'exécutez. Et ensuite, vous voulez exécuter la commande qui l’a été à l’origine. Y at-il un moyen rapide de le faire? Ou comment ceux qui parlent couramment BASH font-ils cela?
la source
vi
édition en ligne (activée avecset -o vi
) ouemacs
? ParceCtrl-O
que ne travaillera pas avec l'ancien, autant que je sache.bind "\C-o":operate-and-get-next
(ou ajouter tout ce qui suitbind
à~/.inputrc
)La réponse de Jon Reinhold est excellente, mais je proposerai une solution beaucoup plus puissante. J'ai aussi un commentaire à propos d'un piège dans la réponse de Jon, mais je n'ai pas assez de réputation pour pouvoir commenter directement, alors @ Jon Reinhold, si vous lisez ceci, veuillez vous adresser mon commentaire ci-dessous.
Bash inclut une commande
fc
qui prend comme paramètres les numéros de ligne de la liste d'historique bash. Il ouvre ensuite votre éditeur par défaut avec ces lignes sous forme de texte. À ce stade, vous pouvez éventuellement modifier les lignes. Ensuite, lorsque vous quittez l'éditeur, bash exécute ces lignes!Un exemple de modification à effectuer est d'ajouter à la dernière ligne quelque chose du type "; read -p" next ... ", à l'exception de la dernière ligne.
Commentaire pour Jon Reinhold: Excellente réponse, mais vous devez le qualifier, car si l'utilisateur a défini la variable bash HISTCONTROL comme élément à inclure
erasedups
, ilC-o
sera confus après l'exécution, car au lieu de la commande suivante attendue dans l'historique, sera affiché. En effet, bash a supprimé l’instance originale de la commande exécutée et toutes les commandes ont ensuite été décalées d’une ligne, c’est-à-dire. à un numéro d'index inférieur dans la liste d'historique.la source
fc
avant les deuxCtl-o
etbash
lui - même. (Contrairement à cette réponse, il est également moins utile.)erasedups
est clairement un bug bash (il aurait pu être prévu pour cette situation). Bon à savoir, cependant.Une autre façon d’obtenir le comportement souhaité est de se familiariser avec les raccourcis bash readline (dont CTRL, oje crois) et la recherche dans l’historique bash.
Recherche historique
CTRL- rvous emmène dans la recherche de l'historique des commandes bash, où vous pouvez commencer à taper la commande que vous recherchez et bash complétera automatiquement la commande pour vous. La fonctionnalité de saisie semi-automatique est vraiment très bonne. Lorsque la commande que vous souhaitez exécuter se trouve sur la ligne de saisie, vous pouvez ENTERexécuter la commande ou appuyer sur CTRL- epour déplacer le curseur à la fin de la ligne de commande et quitter le mode de recherche dans l'historique.
La chose intéressante avec CTRL- eà ce stade, c’est que le tampon d’historique est paramétré de manière contextuelle pour cette commande. Les commandes suivantes et précédentes sont maintenant celles exécutées juste avant et après la ligne que la recherche d’historique a localisée pour vous. Vous pouvez appuyer sur les flèches haut ou bas et saisir la commande suivante.
La recherche dans l'historique est très puissante et constitue un excellent moyen d'éviter d'utiliser la flèche dirigée vers le haut pour revenir à la commande en premier lieu. Une recherche rapide dans l’historique peut vous faire gagner beaucoup de temps et vous permet de poursuivre CTRL, ocomme l’a souligné Jon ci-dessus.
Readline Short Cuts
Si vous cherchez à améliorer votre bash-fu en général, je vous conseillerais de donner un coup de pouce aux raccourcis de lecture pour les touches de direction. Vous constaterez peut-être qu’ils sont plus pratiques et vous permettent d’accroître votre vitesse de frappe, mais bien sûr, YMMV. Voici quelques autres:
Ces raccourcis readline (ainsi que CTRL- adébut de la ligne et CTRL- efin de ligne) augmentera votre vitesse et de l' efficacité à la ligne de commande imo.
la source