La réponse acceptée est correcte, mais il est bon de noter que vous ne devez pas besoin de pour appeler l'externe grep
binaire pour faire la recherche, puisque cette capacité est intégrée. J'ai défini cette fonction dans mon .zshrc
:
histsearch() { fc -lim "*$@*" 1 }
Notes :
-
fc
est le module intégré de zsh qui contrôle l'historique interactif. history
est équivalent à fc -l
.
-
El -m
requiert un motif, qui doit être cité.
-
El -i
ajoute un horodatage.
-
fc
a beaucoup plus d'astuces dans sa manche (par exemple, limiter la recherche à l'historique interne pour la session en cours). Voir le zshbuiltins(1)
ou la page de manuel la documentation officielle .
Edit (2021-01-27) :
L'un des principaux avantages de cette méthode par rapport à la consultation du fichier d'historique de zsh est qu'elle permet d'obtenir des horodatages lisibles par l'homme par le biais de -i
. Bien sûr, cela ne fonctionne que si vous avez activé l'enregistrement des horodatages dans le fichier d'historique en premier lieu :
setopt EXTENDED_HISTORY
Au fil des ans, j'ai également ajouté la fonction -D
à ma fonction, qui affiche le temps d'exécution de la commande dans l'historique. (Ceci dépend à nouveau de EXTENDED_HISTORY
.) De plus, j'ai renommé la fonction en hgrep
ce qui est plus facile à retenir :
hgrep () { fc -Dlim "*$@*" 1 }