Em vez de history
, você pode usar fc
, que permitem selecionar o intervalo:
fc -l 4 7
O comando history
lista todo o histórico da sessão atual. Como:
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
Para pesquisar itens de interesse, posso canalizar history
com grep
like
history | grep ls
1 ls
6 ls
10 ls
Eu também posso ver os últimos 3 comandos como:
history 3
11 history
12 history | grep ls
13 history 3
Mas como obtenho um intervalo específico de histórico? Por exemplo, algo como:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
Em vez de history
, você pode usar fc
, que permitem selecionar o intervalo:
fc -l 4 7
Se você precisar usar o comando history, canalize-o através de sed ou awk:
history | sed -n '10,20p'
history | awk 'NR >= 10 && NR <= 20'
Caso contrário, a resposta do cuonglm é a melhor opção.
Usar o histórico com um grep nos números de linha ao redor do comando que estou procurando funciona melhor para mim.
Por exemplo, estou procurando o que fiz em torno de ping mybox
, mais ou menos 20 linhas.
$ history | grep "ping mybox"
20325 ping mybox
Essa é a linha 20325
, por isso só preciso percorrer as linhas iniciadas por um número no intervalo [20320..20339]
.
$ history | grep ^203[2-3][0-9]
Tags bash command-history