Question Comment rechercher dans mon historique de ligne de commande les commandes que j'ai utilisées auparavant?


Outre la visualisation de l’histoire, existe-t-il un moyen de filtrer mon histoire?

Disons que je veux rechercher une commande qui commence par "ssh"?


148
2017-11-02 01:25


origine




Réponses:


presse Ctrl+R et taper ssh. Ctrl+R va commencer la recherche de la commande la plus récente à l'ancienne (recherche inversée). Si vous avez plus d'une commande qui commence par ssh, Presse Ctrl+R encore et encore jusqu'à ce que vous trouviez le match.

Une fois que vous avez trouvé le match, vous pouvez appuyer sur Entrer pour exécuter la commande ou le curseur gauche / droit pour sélectionner le texte de la commande.

Il n'y a pas d'option inverse par défaut pour Ctrl+R inverser le sens de la recherche mais ici vous trouverez des suggestions à ce sujet.


230
2017-11-02 01:32





Si vous voulez juste rechercher votre historique, vous pouvez simplement utiliser history | grep ssh, substituant ssh à ce que vous voulez rechercher.


76
2017-11-02 01:36



J'utilise cette méthode, car je lie pour voir dans la liste toutes les commandes correspondant à mon filtre. - Pisu


Pressage Ctrl+R va démarrer le mode "reverse-i-search", en tapant "ssh" rechercherait dans votre historique des commandes contenant "ssh".


13
2017-11-02 01:33





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

A l'intérieur ça va

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Note: ce qui précède ne semble plus fonctionner en 14.04, donc cela fait la même chose -

"\e[A":history-search-backward
"\e[B":history-search-forward

Ensuite, en tapant une grande partie de la commande précédente, je souhaite et en utilisant les boutons dn page / page recherche l'historique, en commençant toujours par la page précédente


13
2017-11-02 01:42



Si vous avez des préférences en racine, vous pouvez éditer / etc / inputrc soo, cela fonctionnera pour tous les utilisateurs. - Wolfy
@doug, hmm .. j'ai Ubuntu 15.04. Cette solution fonctionne mais perturbe les touches Ctrl + LeftArrow / Ctrl + RightArrow. Le problème ressemble à la création d'un fichier .inputrc et non à ses entrées. - Ravi
N'oubliez pas de relier .inputrc ou de fermer le terminal - David Brossard


Voici une autre méthode utilisant des commandes classiques (plus susceptibles de fonctionner sur des distributions). L'historique des commandes est stocké dans le fichier .bash_history dans votre répertoire personnel, vous pouvez donc le faire:

grep "ssh" ~/.bash_history

N'oubliez pas le -i flag si vous avez besoin d'une recherche insensible à la casse.


5
2017-11-02 09:49





J'ai trouvé la fonction suivante quelque part sur Internet et je l'ai utilisée avec succès. Mettez ceci dans votre ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Maintenant, rechargez votre shell: exec bash. Vous avez maintenant une nouvelle commande, que vous pouvez utiliser comme ceci:

hgrep ssh

Il vous montrera une liste des commandes correspondantes de votre historique. Pour exécuter une commande, tapez ! suivi du numéro de 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 cette approche mieux que Ctrl+R car il permet des recherches beaucoup plus flexibles, et je peux voir plusieurs résultats à la fois.


2
2017-11-09 03:14





Mettez ceci dans votre ~/.bashrc :

alias hgrep = 'historique | grep --color = auto '

Exemple:


2
2017-10-15 10:59





Si tu utilises shell dans Emacs (M-x shell) vous pouvez utiliser M-r (c'est équivalent à Ctrl+R dans un terminal).


1
2017-08-26 15:33