Commandes de recherche dans l'historique avec des mots-clés discontinus

13

Je me demandais comment rechercher des commandes dans l'histoire sans connaître les premières lettres de la commande?

Lors de la recherche avec Ctrl- Rdans bash, il faut donner les premières lettres de la commande. Et si je ne connais que certains personnages au milieu, ou certains au début et certains au milieu?

Par exemple, pour chercher cat myfile, je sais seulement qu'il y a atdedans, ou cau début et myau milieu quelque part. les mots clés doivent être positionnés en continu. Par exemple, dans cat myfile, je voudrais rechercher les deux cet my, mais Ctrl+Rne permettra pas de spécifier les deux simultanément.

Tim
la source
2
J'utilise Ctrl-R tout le temps et il recherche automatiquement le texte du milieu. Rien d'extraordinaire, mais dans votre exemple, il suffit de taper my. RHEL4 et Cygwin ont confirmé.
Aaron D. Marasco
@Tim: vous n'avez pas vraiment essayé ça, non? Parce qu'il fait rechercher des lettres au milieu d'une commande.
alex
1
@alex: Je voulais en fait dire des mots clés qui ne sont pas positionnés en permanence. Par exemple, dans cat myfile, je voudrais rechercher les deux cet my, mais Ctrl + R ne permettra pas de spécifier les deux simultanément.
Tim

Réponses:

12

Si vous cherchez simplement à trouver la ligne (pour vous rafraîchir la mémoire), vous pouvez simplement chercher la partie de la commande dont vous vous souvenez:

history | grep "substring"
jasonwryan
la source
2
Comment se fait-il que j'utilise des systèmes * nix depuis plus de 5 ans et que je ne connaissais pas la historycommande jusqu'à présent? Merci!
GMA
8

Bash n'a qu'une simple recherche de chaîne, pour autant que je puisse voir.

Pensez à passer à zsh , qui a une recherche de caractères génériques d'historique. history-incremental-pattern-search-backwardet history-incremental-pattern-search-forwardne sont pas liés aux clés par défaut, mais vous pouvez les lier:

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

Tapez ensuite Ctrl+X Ctrl+R ^c*my.

Gilles 'SO- arrête d'être méchant'
la source
0

Apropos (1) devrait également renvoyer un homme pour le sujet si l'homme contient ce mot. Whatis (1) ne renvoie que des correspondances absolues.

Pour référence: Apropos == man -k Whatis == man -f

Ces deux devraient être d'une grande aide, avec les caractères génériques * et?

baweaver
la source
1
La question concerne la recherche dans l'historique des commandes dans le terminal ... (pas la recherche dans les pages de manuel) ... mais sur une note complètement distincte, j'ai trouvé votre réponse utile, alors +1 :)
Peter.O
.... Ah charmant, mon mauvais sur ce compagnon.
baweaver