2 votes

Comment obtenir la flèche descendante de l'historique de navigation en bash dans le terminal Mac OS X ?

Dans presque tous les environnements de ligne de commande modernes que j'ai utilisés, vous pouvez appuyer sur la flèche vers le haut pour revenir quelques commandes en arrière dans votre historique et réexécuter une commande antérieure. Mais dans certains environnements de ligne de commande que j'ai utilisés, à l'invite de commande suivante, vous pouvez également appuyer sur la flèche vers le bas pour parcourir votre historique à partir de l'endroit où la commande précédente est apparue dans l'historique.

Par exemple, supposons que vous fassiez ceci :

$ vi mysource.c  
$ make  
$ make test  

Supposons ensuite que votre test échoue et que vous souhaitiez revenir à ces étapes, en appuyant trois fois sur la flèche vers le haut pour revenir à vi mysource.c et appuyer sur la touche return pour le faire fonctionner. Ensuite, à l'invite suivante, je veux pouvoir appuyer une fois sur la flèche du bas pour aller à make . Et à l'invite suivante, je veux appuyer une fois sur la flèche vers le bas pour aller à make test .

Je ne sais pas si c'est dû à la configuration par défaut de Mac OS X bash ou les paramètres par défaut de Terminal.app, ou quoi que ce soit d'autre, mais cette fonctionnalité "appuyer sur la flèche vers le bas à une nouvelle invite pour parcourir l'historique à partir du dernier endroit où vous avez utilisé l'historique" n'est pas activée par défaut.

J'ai parcouru les bash(1) et l'a trouvée :

       forward-search-history (C-s)

...mais ^S n'a pas semblé faire quoi que ce soit. Il n'est pas certain qu'il ait été absorbé par Terminal en tant qu'outil de gestion de la vieille école. XOFF ou quelque chose du genre (bien que cela ne semble pas interrompre la sortie du terminal).

Quelques autres notes :

  • Je suis sur Mac OS X Snow Leopard 10.6.6.
  • Je connais déjà beaucoup d'autres façons amusantes de travailler avec l'histoire Shell, c'est juste cette chose en particulier que j'essaie de faire fonctionner en ce moment.
  • Bien que toute indication dans la bonne direction serait utile, les solutions connues pour fonctionner sur les 10.6.x sont les suivantes bash dans Terminal.app serait très utile.

1voto

Damian Powell Points 315

^S fait le contraire de ^R (après avoir fait ^R ). Il se peut que vous deviez faire stty -ixon pour désactiver le XOFF comportement.

Ce qui se rapproche le plus de ce que vous recherchez est fourni par ^O (readline operate-and-get-next ). Appuyez sur la flèche du haut pour retrouver une commande précédente et appuyez sur la touche ^O au lieu de Enter . La commande est exécutée. Lorsque l'invite est à nouveau émise, la commande suivante dans l'historique est placée sur la ligne de commande. Vous pouvez utiliser les flèches, Enter ou ^O à ce stade.

1voto

Jim Van Zandt Points 19

Selon votre version de stty, vous aurez peut-être besoin de "stty flush undef". (Actuellement, la page de manuel OS X stty documente "flush", mais la sortie stty -a affiche toujours la valeur "discard").

Utilisez ^o pour exécuter une commande de l'historique lorsque vous pensez vouloir la commande suivante également. Si vous la voulez, répétez simplement le ^o. Si vous ne la voulez pas après tout, vous pouvez vous déplacer dans l'historique à partir de ce point avec ^p, ^n, ^s, etc., ou effacer la ligne de commande avec ^u.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X