
Como posso obter/filtrar entradas do histórico em um intervalo específico?
Eu tenho um grande arquivo de histórico e uso frequentemente
history | grep somecommand
Agora, minha memória está muito ruim e também quero ver o que mais fiz na hora em que digitei o comando.
Por enquanto eu faço isso: pego match, digamos 4992 somecommand
, então eu faço
history | grep 49[0-9][0-9]
isso geralmente é bom o suficiente, mas eu preferiria fazê-lo com mais precisão, ou seja, ver os comandos de 4972 a 5012, ou seja, 20 comandos antes e 20 depois.
Eu estou querendo saber se existe uma maneira mais fácil? Eu suspeito que um script personalizado seja necessário, mas talvez alguém tenha feito algo semelhante antes.
Responder1
Você pode grep
imprimir algumas linhas ao redor da partida, por exemplo, 3 antes e 5 depois:
history | grep -B 3 -A 5 somecommand
grep -C 4
é equivalente a grep -A 4 -B 4
.
Mas muitas vezes você não saberá com precisão quantas linhas deseja com antecedência. Então use menos e pesquise dentro dele. Você pode até iniciar a pesquisa na linha de comando:
history | less +/somecommand
Responder2
Experimente FC:
fc -l 4972 5012
... é um comando interno do bash. (então não tente no tcsh:>)
Responder3
tentarhistory | grep -C20 '^4992'