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 очищает историю выходных данных
Кстати, вы также можете очистить в истории% очистки в