Lista de histórico sem timestamp e exclusivo dos resultados

5

Usando o bash, salvei meu histórico com o timestamp.

Como imprimir o histórico omitindo o registro de data e hora?

alias h=history
alias g=grep -i

Para encontrar as linhas que usei para o heroku, digite:

> h | g heroku

Gostaria de destacar os resultados sem o carimbo de data e hora, naturalmente.

Esta questão é um pouco relacionada: Como evitar entradas duplicadas em .bash_history

No entanto, às vezes, quero ver a duplicata no histórico para ver o contexto no qual um comando foi executado.

    
por justingordon 24.10.2012 / 03:31

3 respostas

2

Simplesmente, history | sed 's/.[ ]*.[0-9]*.[ ]*//' | uniq | grep -i "heroku"

o sed removerá os [espaços] [números] [espaços] no início de cada linha

para otimização,

history | grep -i "heroku" | sed 's/.[ ]*.[0-9]*.[ ]*//' | uniq

    
por Ahmed Daif 04.03.2014 / 12:58
2

Além de responder por @ devav2

Limpar / anular a variável de ambiente de registro de data e hora do histórico

HISTTIMEFORMAT="";

Exportar o seguinte comando,

export HISTCONTROL=ignoredups - > Isto irá ignorar as duplicatas que são executadas em sequência

    
por GC 13 28.02.2014 / 11:39
1

O registro de data e hora pode ser suprimido (ou modificado) por comando:

% bl0ck_qu0te%

Isso apenas deixa os números de linha, que não podem ser suprimidos, mas que são acolchoado com uma largura fixa (para números de linha < 100.000):

printf("%5d%c %s%s\n", line_number, modified ? '*' : ' ', timestamp, line);

Assim, para remover o prefixo de cada linha, precisamos recortar os primeiros 7 caracteres (5 dígitos, 1 caractere marcador e 1 espaço), por exemplo:

$ HISTTIMEFORMAT= history 10 | cut -c8-

Isso pode ser facilmente adicionado a um alias:

$ alias h='HISTTIMEFORMAT= history | cut -c8-'

Em seguida, invocado com, por exemplo:

$ h | grep whatever
$ h | head -n 10
    
por chocolateboy 25.03.2018 / 21:29