O history
comando lista todo o histórico da sessão atual. Gostar:
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
A fim de procurar itens de interesse, eu posso tubo history
com grep
como
history | grep ls
1 ls
6 ls
10 ls
Também posso ver os três últimos comandos, como:
history 3
11 history
12 history | grep ls
13 history 3
Mas como obtenho um intervalo específico da história? Por exemplo, algo como:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
bash
command-history
Slartibartfast
fonte
fonte
x
comandos e canalizar parahead
.history | grep something
resultados são mostrados nos comandos numerados123 234 345
no histórico e talvez eu não saiba o número do último comando executado (history
neste caso). Meu último comando pode ser numerado 400, 500 ou o que for. Então, primeiro eu tenho que verificar esse número, descobrir a diferença, a lista dos últimosx
comandos e tubulação entãohead
Respostas:
Em vez de
history
, você pode usar ofc
que permite selecionar o intervalo:fonte
fc -l -16 -10
.Se você deve usar o comando history, passe-o através do sed ou do awk:
Caso contrário, a resposta do cuonglm é a melhor opção.
fonte
head
etail
resolveria esse problema de uma maneira ainda menos elegante. Para o intervalo de 10 a 25, você teria que usarhistory | head 25 | tail 15
.Usar o histórico com um grep nos números das linhas em torno do comando que estou procurando funciona melhor para mim.
Por exemplo, estou procurando o que fiz por aí
ping mybox
, mais ou menos 20 linhas.$ history | grep "ping mybox" 20325 ping mybox
Essa é a linha,
20325
então só tenho que cumprimentar as linhas começando por um número no[20320..20339]
intervalo.$ history | grep ^203[2-3][0-9]
fonte