IPython: как выборочно и безопасно стереть историю IPython?

Я изучал, как использовать пакет paramiko только для того, чтобы обнаружить, что все сохраненные пароли в текстовом виде в IPython %hist. Не очень хорошо.

Поэтому мне нужно избавиться от определенных частей того, что хранится в %hist. Говоря это, я не хочу стереть всю историю. - Только те части, где я был небрежен, чтобы набрать password = или аналогичные выбранные термины.

Спасибо


Комментарии мне не нужны:

  • %clear только очищает сеанс. Он не уничтожает историю.
  • Да. Я буду использовать xSA_keys только с этого момента.

Ответы

Ответ 1

История хранится в $(ipython locate)/profile_default/history.sqlite по умолчанию. Вы можете удалить файл и/или выполнить любую операцию с ним (безопасное удаление и т.д.). Это файл sqlite, так что вы можете загрузить его любой программой sqlite и выполнить запрос к нему.

Проверьте в $(ipython locate)/profile_default/ и других $(ipython locate)/profile_xxx, что у вас нет других файлов истории. $(ipython locate) обычно ~/.ipython/, но может варьироваться:

ls $(ipython locate)/profile_*/*.sqlite

Ответ 2

Одно из решений:

sqlite ~/.ipython/profile_default/history.sqlite

delete from history where source like '%password =%';

Ответ 3

Объединение @Ovidiu Ghinetответа с @Mattпринятым ответом:

sqlite $(ipython locate)/profile_*/*.sqlite || sqlite3 $(ipython locate)/profile_*/*.sqlite

Затем из консоли sqlite:

delete from history where source like '%password%';
select * from history; /* confirm that no passwords left        */
.quit                  /* forgot how to exit sqlite console? ;) */

Ответ 4

Если вы хотите удалить историю из определенного сеанса, запустите:

sqlite ~/.ipython/profile_default/history.sqlite

Внутри SQLite:

select * from history;
# session is the first column in history
delete from history where session=XXX;

Ответ 5

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

/home/user/.ipython/profile_default/history.sqlite

Ответ 6

Я не смог найти способ выборочно стереть историю IPython, но я узнал, как стереть данные встроенным функциональным, не sqlite способом:

% clear out #it очищает историю выходных данных

Кстати, вы также можете очистить в истории% очистки в