Outre l'affichage de l'historique, existe-t-il un moyen de filtrer mon historique ?
Disons que je veux rechercher une commande qui commence par "ssh" ?
Outre l'affichage de l'historique, existe-t-il un moyen de filtrer mon historique ?
Disons que je veux rechercher une commande qui commence par "ssh" ?
J'ai trouvé la fonction suivante quelque part sur Internet et je l'ai utilisée avec beaucoup d'efficacité. Mettez-la 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 suit :
hgrep ssh
Il vous montrera une liste de commandes correspondantes dans 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 + R parce qu'il permet des recherches beaucoup plus souples, et je peux voir plusieurs résultats à la fois.
Je voulais écrire ceci comme un commentaire sur @ssmy mais je n'ai pas réussi à faire coopérer le formatage dans le commentaire.
Après avoir cherché dans l'histoire avec history | grep ssh
vous pouvez alors exécuter la commande que vous souhaitez en tapant son numéro précédé d'un point d'exclamation, par exemple !42
.
Exemple :
$ history | grep ssh
5 ssh me@someserver.net
13 ssh me@someotherserver.net
42 ssh me@thisone.com
$ !42
L'historique est bon mais limité - je préfère configurer mon environnement bash de sorte que j'enregistre les données suivantes todo des 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 lister toutes les commandes que j'ai exécutées dans le répertoire actuel, que je peux envoyer à grep, etc - cela s'appelle 'dish' :
https://github.com/wolfwoolford/dish
Si vous voulez aller droit au but, il suffit d'ajouter cette source dans votre .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Il existe également une commande très utile que vous obtenez gratuitement, appelée 'dishg' - ou dish global - qui affiche toutes les commandes exécutées, quel que soit le répertoire. Évidemment, celle-ci n'est utile que lorsqu'elle est utilisée avec grep et tail etc...
Je l'utilise depuis des années et c'est littéralement la première chose que j'installe lorsque 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 ...
J'aime grep mon historique au lieu de Ctrl + R recherche en arrière. C'est parce que vous ne pouvez voir qu'une seule ligne avec Ctrl + R . Avec grep, vous obtenez une vue plus globale de votre dernière interaction avec une commande, etc.
J'ai les éléments suivants dans mon .bashrc
. Il vous permet de rechercher dans l'historique des commandes en tapant hiss KEYWORD
. Appelez ça comme vous voulez. J'aime siffler^^ . N'oubliez pas de recharger votre .bashrc
avec source ~/.bashrc
hiss () { history | grep "$@"; }
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.