Réponses:
Appuyez sur Ctrl+ Ret tapez ssh
. Ctrl+ Rlancera la recherche de la commande la plus récente à la plus ancienne (recherche inversée). Si vous avez plus d'une commande qui commence par ssh
, appuyez plusieurs fois sur Ctrl+ Rjusqu'à ce que vous trouviez la correspondance.
Lorsque vous avez trouvé la correspondance, vous pouvez appuyer sur Enterpour exécuter la commande ou sur le curseur gauche / droite pour sélectionner simplement le texte de la commande.
Il n'y a pas d' option inverse par défaut pour Ctrl+ Rd'inverser la direction de la recherche , mais ici vous trouverez quelques suggestions à ce sujet.
Si vous souhaitez simplement effectuer une recherche dans votre historique, vous pouvez simplement utiliser history | grep ssh
ssh en substituant tout ce que vous souhaitez rechercher.
Je fais une légère variation de ce qui précède, fonctionne bien pour moi (si vous faites référence à votre histoire bash
Dans mon dossier personnel, je crée un fichier nommé
.inputrc
À l'intérieur va cette
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Remarque: ce qui précède ne semble plus fonctionner dans 14.04, donc cela fait la même chose -
"\e[A":history-search-backward
"\e[B":history-search-forward
Puis, en tapant dans la commande précédente, je souhaite utiliser les boutons page up / page dn pour parcourir l'historique, toujours en commençant par page up.
Voici une autre méthode utilisant des commandes classiques (plus de chances de fonctionner avec plusieurs distributions). L’historique des commandes est stocké dans le fichier .bash_history
de votre répertoire personnel. Vous pouvez ainsi:
grep "ssh" ~/.bash_history
N'oubliez pas le -i
drapeau si vous avez besoin d'une recherche insensible à la casse.
history | grep ssh
montrera que ssh de session temporaire alors je voudrais aller pour cette réponse.
J'ai trouvé la fonction suivante quelque part sur Internet et je l'ai utilisée à bon escient. Mettez ceci dans votre ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Maintenant re-charger votre shell: exec bash
. Vous avez maintenant une nouvelle commande, que vous pouvez utiliser comme ceci:
hgrep ssh
Il vous montrera une liste de commandes correspondantes de votre historique. Pour exécuter une commande, tapez !
suivi du numéro de la commande. Voici un exemple:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
J'aime mieux cette approche que Ctrl+ Rcar elle permet des recherches beaucoup plus souples et permet de voir plusieurs résultats à la fois.
Si vous utilisez shell dans Emacs ( M-x shell
), vous pouvez utiliser M-r
(cela équivaut à Ctrl+ Rdans un terminal ).
L'histoire est bonne mais limitée - je préfère configurer mon environnement bash pour pouvoir consigner toutes les commandes que j'ai exécutées, en plus du répertoire dans lequel elles ont été exécutées. Ensuite, je lance une commande pour répertorier toutes les commandes. J'ai couru dans le répertoire courant, que je peux diriger vers grep, etc. - ça s'appelle 'dish', voir:
https://github.com/wolfwoolford/dish
Si vous voulez aller droit au but, sourcez-le simplement dans votre .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Il existe également une commande très utile que vous recevez gratuitement et qui s'appelle 'dishg' - ou dish global - qui imprime chaque commande exécutée, quel que soit le répertoire. Evidemment celui-ci n'est utile que lorsqu'il est utilisé avec grep et tail etc ...
Je l'utilise depuis des années et c'est littéralement la première chose que j'installe à chaque fois que je configure une nouvelle boîte. Il enregistre les commandes que vous exécutez dans des fichiers texte dans un répertoire caché (~ / .dish). Je n'ai jamais eu de problème d'espace disque ...
Voulait écrire ceci en tant que commentaire à @ssmy mais n'a pas pu faire coopérer la mise en forme dans le commentaire.
Après avoir parcouru l’historique, history | grep ssh
vous pouvez exécuter la commande souhaitée en tapant son numéro précédé d’un point d’exclamation, par exemple !42
.
Exemple:
$ histoire | grep ssh 5 ssh moi@someserver.net 13 ssh moi@someotherserver.net 42 ssh moi@thisone.com $! 42