Posso fazer com que o histórico não imprima nenhum registro de data e hora para comandos que foram executados antes de ativar essa opção?

1

Se você executar history , ele emitirá a data atual antes dos comandos que foram executados antes de eu ativar os timestamps. Há alguma maneira em que eu possa ignorar isso?

Por exemplo, se meu .bash_history for assim:

1  +2016-01-30 16:54:10 cd /tmp
2  +2016-01-30 16:54:10 wine *exe
3  +2016-01-30 16:54:10 grep...
4  +2016-01-30 16:54:10 sed.....
5  +2016-01-30 16:52:20 history

Eu quero que ele não mostre as datas nos comandos 1-4, porque essa é apenas a data atual, e eu não habilitei $HISTTIMEFORMAT quando esses comandos foram executados.

    
por DisplayName 30.01.2016 / 16:54

1 resposta

0

Seu arquivo .bash_history não se parece com isso, apenas a exibição history . O formato no arquivo é # e um único número (segundos desde a época) em uma linha separada. E para entradas armazenadas (e, portanto, lidas) sem esse valor de tempo, a tela mostra quando o seu shell atual lê o histórico, geralmente quando o shell é iniciado, não na hora atual.

Se você editar o arquivo para inserir # e o número de um horário conhecido antes de cada entrada que não tenha um valor #seconds real, você poderá configurar um alias ou função (ou mesmo script) para sed (ou awk etc) que o tempo (formatado) fora da exibição. E (pelo menos nas versões que tenho para entregar, 4.1.2 e 4.3.11) se você editar o arquivo para inserir #0 especificamente, ele aparentemente considera inválido e exibe ?? (dois pontos de interrogação) em vez de o tempo formatado, que não é o que você pediu, mas pode estar perto o suficiente para o trabalho do governo.

Para economizar tempo (e erros), você pode fazer isso automaticamente com

perl -ni.bak 'if /^#/ print $_.<> else print "#seconds".$/.$_' .bash_history
    
por 11.06.2016 / 17:53