web-dev-qa-db-fra.com

Dans reverse-i-search (Ctrl + R), Toute méthode pour basculer entre des commandes similaires dans l'historique

Je pense qu'un exemple sera bon pour comprendre ma question.

...
scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important
...
...
scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important/tested
...
...

Supposons que c'est l'ordre des commandes dans l'historique. Si je fais Ctrl+R et tapez scp il affichera la dernière commande scp exécutée (c'est-à-dire la ligne se terminant par 'testé').

Mais je veux localiser la commande scp se terminant par "important". Y a-t-il un moyen dans ce reverse-i-search pour afficher toutes les commandes commençant par scp, pour choisir celle qui convient?

47
Arun

Continuez à appuyer Ctrl-R et il traversera votre histoire.

98
jgr

Si vos termes de recherche sont un peu plus compliqués/non contigus, une autre option est de grep parmi les résultats history, par exemple:

history 300 | grep scp | grep important$

Cela renverra une liste de commandes dans votre historique qui correspondent, telles que:

3323  scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important
3325  scp file1 [email protected]:/home/user1/winfiles/samplecode/important

Et vous pouvez ensuite exécuter la commande appropriée avec !3325.

Je trouve parfois cela utile lors de l'exécution de nombreuses commandes similaires et je devrai peut-être appuyer sur Ctrl+R plusieurs fois pour revenir à la commande exacte.

16
Bonlenfum

Il existe une excellente alternative à Ctrl+R

installer https://github.com/dvorka/hstr

exécutez-le avec hh

il affiche une liste de vous toutes les dernières commandes exécutées (contenu de ./bash_history)

si vous commencez à taper la liste sera filtrée en fonction de ce que vous tapez

vous pouvez utiliser Up/Down flèches pour sélectionner la commande souhaitée et sélectionnez-la avec Enter

2
GiorgosK