Embora seja possível armazenar a hora em que um comando foi executado, os comandos de manipulação de histórico não usam o tempo como referência. Consulte HISTTIMEFORMAT
em man bash
:
HISTTIMEFORMAT
If this variable is set and not null, its value is used as a
format string for strftime(3) to print the time stamp associated
with each history entry displayed by the history builtin. If
this variable is set, time stamps are written to the history
file so they may be preserved across shell sessions. This uses
the history comment character to distinguish timestamps from
other history lines.
Se você tivesse definido HISTTIMEFORMAT
antes de executar os comandos que queria excluir, seu .bash_history
teria linhas assim:
$ tail -4 ~/.bash_history
#1449955320
history
#1449955329
history -w
Depois, você pode aproveitar os timestamps do Unix para excluí-los, usando awk
, por exemplo:
awk -F# -v end=$(date -d yesterday +%s) \
-v start=$(date -d 'now - 3 days' +%s) \
' < start || > end {print; getline; print}'
Não tenho certeza de como esse comando funcionará com comandos de várias linhas, mas talvez você possa contar os timestamps para obter o número atribuído a um comando e usar history
para excluí-lo.
Se você não tiver definido HISTTIMEFORMAT
antes, terá que fazer isso manualmente.