How хан I remove command-line history over в specific украл period?
Is it possible do so with only one command?
В то время как возможно сохранить время, в которое была выполнена команда, команды управления историей не используют время в качестве ссылки. Искать HISTTIMEFORMAT
в 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.
Если Вы установили HISTTIMEFORMAT
перед выполнением команд, Вы хотели удалить, Ваш .bash_history
имел бы строки как так:
$ tail -4 ~/.bash_history
#1449955320
history
#1449955329
history -w
Затем Вы могли использовать в своих интересах метки времени Unix для удаления их, с помощью awk
, например:
awk -F# -v end=$(date -d yesterday +%s) \
-v start=$(date -d 'now - 3 days' +%s) \
'$2 < start || $2 > end {print; getline; print}'
Я не уверен, как эта команда будет работать с многострочными командами, но Вы могли, возможно, считать метки времени, чтобы присвоить число команде и затем использовать history
удалить его.
Если Вы не установили HISTTIMEFORMAT
заранее, затем необходимо будет сделать это вручную.