我一直在学习如何使用paramiko
包来发现我在IPython %hist
中以纯文本形式存储的所有密码。不太好。
因此,我需要摆脱%hist
中存储内容的特定部分。说,我不想擦除整个历史记录。 - 只有我不小心输入password =
或类似选择条款的部分。
感谢
评论我不需要:
%clear
仅清除会话。它没有抹去历史。答案 0 :(得分:32)
默认情况下,历史记录存储在$(ipython locate)/profile_default/history.sqlite
上。
您可以删除文件,或者对其执行任何操作(安全擦除等)。
它是一个sqlite文件,因此您可以使用任何sqlite程序加载它并对其进行查询。
签入$(ipython locate)/profile_default/
和其他$(ipython locate)/profile_xxx
您没有任何其他历史记录文件。 $(ipython locate)
通常为~/.ipython/
,但可以有所不同:
ls $(ipython locate)/profile_*/*.sqlite
答案 1 :(得分:16)
一种解决方案是:
sqlite ~/.ipython/profile_default/history.sqlite
delete from history where source like '%password =%';
答案 2 :(得分:2)
将@Ovidiu Ghinet的answer与@Matt的accepted answer组合:
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? ;) */
答案 3 :(得分:0)
如果您完全想从头开始,只需手动删除以下文件(对我有用)
/home/user/.ipython/profile_default/history.sqlite
答案 4 :(得分:0)
我找不到选择性地擦除IPython历史记录的方法,但是我发现了如何通过内置的func,非sqlite方法擦除数据:
%清除#清除输出历史记录
顺便说一句,您还可以通过%clear in清除历史记录
答案 5 :(得分:0)
如果要从特定会话中删除历史记录,请运行:
sqlite ~/.ipython/profile_default/history.sqlite
内部SQLite:
select * from history;
# session is the first column in history
delete from history where session=XXX;