Como obter o intervalo de histórico do shell Bash

Como obter o intervalo de histórico do shell Bash

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 grepimprimir 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'

informação relacionada