Как я удаляю bash_history в течение текущего дня только?

Я работаю над клиентским проектом, который размещается на цифровом океане на сервере человечности, я работаю над ним с несколькими другими разработчиками, и я являюсь своего рода новым и сделал набор из команд, и это действительно грязно. Как я могу удалить историю команд до определенного момента?

Например, я хотел бы удалить все команды, которые я ввел сегодня, и оставьте все предыдущие команды прежде, которые, действительно ли это возможно?

Для других разработчиков легче найти предыдущие команды, не проходя всех моих. Действительно ли возможно разрешить bash_history до определенного момента, например, только сегодняшняя история? Если так, как?

Советуйте!

Спасибо!

1
задан 10 April 2017 в 19:47

3 ответа

Линии в истории Bash сохраняются в виде простых строк текста без какой-либо мета-информации, такой как временная метка вызова. Поэтому невозможно автоматически стереть всю историю команд за один день, потому что вы просто больше не можете сказать, какая команда была запущена, когда.


Если вы просто хотите удалить всю историю команд текущего сеанса Bash (т. е. все, что еще только в памяти и еще не записано на диск), вы можете очистить буфер истории в памяти или замените его содержимым старого файла истории с диска.

  • Очистка буфера истории приведет к пустой истории в памяти для вашего текущего сеанса, что означает, что никакие команды не будут отображаться, если вы нажмете и т. Д. Выйдите из сеанса Bash, все новые команды, которые были введены после очистки, будут добавлены в файл истории, и в следующем сеансе вы снова увидите полную историю, пропустив только интервал между началом вашего последнего сеанса и командой очистки. .

    history -c
    
  • Замена текущего буфера истории в памяти содержимым файла истории с диска будет иметь тот же конечный результат, что и очистка буфера истории, за исключением того, что в текущем сеансе у вас будет доступ к старой истории команд вместо пустого списка.

    history -r
    

Если это не поможет вам, потому что вы хотите привести в порядок записи предыдущих или только частичных сеансов, вам нужен хирургический метод:

[ 1113] Синхронизируйте ваш текущий буфер истории в памяти с файлом истории на диске, а затем откройте этот файл в текстовом редакторе и удалите все ошибочные записи вручную.

Чтобы добавить историю из текущего сеанса в файл истории вручную (поскольку это происходит автоматически только при выходе из сеанса), сначала запустите:

history -a

После этого откройте файл истории Bash ~/.bash_history в вашем любимом текстовом редакторе (поскольку вы находитесь на сервере, я бы предложил, например, nano) и отредактируйте список команд в соответствии с вашими предпочтениями. В файле перечислены все записанные команды в хронологическом порядке, самые последние команды выполняются последними. Просто удалите оскорбительные строки и сохраните свою работу.

После этого вы должны перезагрузить измененную историю в буфер истории в памяти, используя следующую команду, чтобы предотвратить добавление старых записей из памяти в файл истории при выходе из сеанса:

[ 113]
2
ответ дан 7 December 2019 в 13:34

Можно удалить строки истории с

 history -d NNN

, где nnn является 3 номерами строки цифры. взгляните также к man history, можно удалить историю текущей сессии оболочки с:

 history -c 
0
ответ дан 7 December 2019 в 13:34

Если это поможет:
Вы можете добавить метку времени в ~ /.bash_history
Он устанавливается в переменной окружения HISTTIMEFORMAT. Эта переменная относится к типу даты (см. Man date, чтобы узнать, как ее отформатировать).
Вы можете навсегда добавить его на уровне пользователя, добавив его в конец .bashrc
Пример:

$ echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bashrc

(здесь ГГГГ-ММ-ДД чч: мм: сс).

Теперь вывод будет примерно таким: #history

Вы тоже можете добавить это в историю всех пользователей, но я не пробовал. По-видимому, вы делаете это, добавляя то же самое в конец / etc / profile или его эквивалента (файлы в /etc/profile.d/).

Я нашел всю указанную выше информацию в Google и нашел вот это: https://www.2daygeek.com/display-date-time-linux-bash-history-command/ (но у меня нет никакой связи с этим сайтом, и я не знаю его автора)

3
ответ дан 4 March 2020 в 19:21

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

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