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?

Léo Léopold Hertz 준영
la source

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
hlovdal
la source
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

Eric Burghard
la source
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

Martin Dvorak
la source
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.

Eyad Ebrahim
la source
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