Impossible de transférer l'historique des recherches Bash de la même manière qu'avec CTRL-r


203

J'essaie de rechercher mon histoire bash de la même manière qu'avec CTRL- r, mais pour avancer.

Cela a été pénible pour moi, quand je viens de frapper une fois de trop CTRL- rde retrouver la commande précédente.

Comment pouvez-vous effectuer une recherche dans votre historique Bash de la même manière qu'en recherche inversée?

Réponses:


321

Vous pouvez également effectuer une recherche vers l'avant. Dans le manuel d'informations bash, " 8.2.5 Recherche de commandes dans l'historique ":

Pour rechercher en arrière dans l'historique une chaîne particulière, tapez C-r. La frappe C-srecherche dans l'historique.

Le problème avec Ctrl-S est cependant qu'il entre parfois en collision avec le contrôle de flux XON / XOFF (dans Konsole par exemple). Cependant, la recherche est une fonction de ligne de lecture, et vous devriez pouvoir la lier à une autre clé. Mise à jour: plus simple et meilleur consiste simplement à désactiver XON / XOFF en exécutant

stty -ixon

4
C'est génial, mais j'ajoute stty -ixon à mon .profile et cela ne semble pas fonctionner pour les nouveaux onglets. Des idées sur la façon de faire fonctionner cela? J'aimerais que XON / XOFF soit désactivé par défaut.
John Gallagher

13
Au cas où quelqu'un d'autre aurait le même problème que moi - si vous ajoutez ceci à .profile, cela ne prendra pas effet. Ce n'est que lorsque vous l'ajoutez au .bash_profile que la magie opère! Merci pour un bon conseil - cela me rendait fou depuis des années.
John Gallagher

12
@JohnGallagher Il est important de noter que .bash_profileet .profilene sont fournis que pour les shells de connexion. Je mettrais ceci .bashrc(dont je me procurais .profile).
Victor Zamanian

13
[[ $- == *i* ]] && stty -ixonpeut être utilisé pour éviter le problème décrit ici
mMontu

3
Dans le cas où vous utilisez PuTTY et ne pouvez pas / ne voulez pas maintenir .bash_profilesur chaque machine à laquelle vous vous connectez, cette réponse sur le super-utilisateur fonctionne comme un régal.
Fazy

41

La meilleure astuce IMHO permet avec pgupet pgdown. mettez ça dans votre~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

déconnexion / connexion, tapez les premières lettres, puis pgupou pgdownpour rechercher dans l'historique

ctrl-R rechercher toutes les lignes contenant des mots, tandis que les lignes de recherche historique-recherche-avant commençant par des mots


2
Vous pouvez également décommenter ces 2 lignes dans /etc/inputrc(par exemple dans Ubuntu).
falconepl

2
Je préfère le lier aux flèches haut et bas: "\ e [A": historique-recherche-en arrière et "\ e [B": historique-recherche-en avant
shmup

Et si cela n'a aucun effet en bash?
Sören

26

Vous voudrez peut-être essayer https://github.com/dvorka/hstr qui permet le filtrage "suggérer le style de boîte" de l'historique Bash avec un ordre basé sur les métriques (facultatif), c'est-à-dire qu'il est beaucoup plus efficace et plus rapide dans les directions avant et arrière:

entrez la description de l'image ici

Il peut être facilement lié à Ctrl-ret / ouCtrl-s


5
Je suis amoureux. Instructions rapides pour installer sur Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan

14

J'appuie habituellement sur le ESCterminal, puis sur >. Il se réinitialise au moins et vous pouvez alors essayer de cliquer moins souvent CTRL+ R.


s / cliquez / appuyez sur / Vous devez également appuyer deux fois sur la touche d'échappement (première fois pour échapper à la recherche en arrière).
Croad Langshan
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.