How to remove command-line history from в specific украл period?

How хан I remove command-line history over в specific украл period?

Is it possible do so with only one command?

3
задан 13 December 2015 в 00:32

1 ответ

В то время как возможно сохранить время, в которое была выполнена команда, команды управления историей не используют время в качестве ссылки. Искать 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 заранее, затем необходимо будет сделать это вручную.

3
ответ дан 1 December 2019 в 16:26

Другие вопросы по тегам:

Похожие вопросы: