La commande history
répertorie tout l'historique de la session en cours. Comme:
1 ls
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history
Afin de rechercher des éléments d'intérêt, je peux diriger history
avec grep
comme
history | grep ls
1 ls
6 ls
10 ls
Je peux également voir les 3 dernières commandes comme:
history 3
11 history
12 history | grep ls
13 history 3
Mais comment puis-je obtenir un historique spécifique? Par exemple quelque chose comme:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
Au lieu de history
, vous pouvez utiliser fc
, qui vous permet de sélectionner une plage:
fc -l 4 7
Si vous devez utiliser la commande d'historique, dirigez-la via sed ou awk:
history | sed -n '10,20p'
history | awk 'NR >= 10 && NR <= 20'
Sinon, la réponse de cuonglm est une meilleure option.
Utiliser l'historique avec un grep sur les numéros de ligne autour de la commande que je recherche fonctionne le mieux pour moi.
Par exemple, je cherche ce que j'ai fait autour de ping mybox
, plus ou moins 20 lignes.
$ history | grep "ping mybox" 20325 ping mybox
C'est la ligne 20325
donc je dois juste grep les lignes commençant par un nombre dans le [20320..20339]
gamme.
$ history | grep ^203[2-3][0-9]