Como obter o histórico do shell Bash?

9

Como posso obter / filtrar entradas de histórico em um intervalo específico?

Eu tenho um arquivo de histórico grande e uso com frequência

history | grep somecommand

Agora, minha memória está muito ruim e também quero ver o que mais fiz na época em que entrei no comando.

Por enquanto eu faço isso: obter correspondência, digamos 4992 somecommand , então eu faço

history | grep 49[0-9][0-9]

isso geralmente é bom o suficiente, mas eu prefiro fazê-lo com mais precisão, isto é, ver comandos de 4972 a 5012, ou seja, 20 comandos antes e 20 depois.

Eu estou querendo saber se há um caminho mais fácil? Eu suspeito, um script personalizado está em ordem, mas talvez alguém tenha feito algo semelhante antes.

    
por Aniti 04.10.2010 / 13:12

3 respostas

11

Você pode dizer a grep para imprimir algumas linhas em torno da correspondência, 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 sabe exatamente quantas linhas deseja antecipadamente. Portanto, use menos e procure dentro dele. Você pode até mesmo iniciar a pesquisa a partir da linha de comando:

history | less +/somecommand
    
por 05.10.2010 / 00:37
8

Tente fc:

fc -l 4972 5012

... é um comando bash builtin. (então não tente em tcsh: >)

    
por 18.06.2012 / 03:48
4

tente history | grep -C20 '^4992'

    
por 04.10.2010 / 13:19