IPython:如何擦拭IPython';有选择地回顾历史&;安全地?

IPython:如何擦拭IPython';有选择地回顾历史&;安全地?,ipython,ipython-notebook,Ipython,Ipython Notebook,我一直在学习如何使用paramiko软件包,却发现我所有的密码都以明文形式存储在IPython的%hist中。不太好 因此,我需要去掉存储在%hist中的特定部分。这么说,我不想抹去整个历史只有那些我不小心输入了password=或类似术语的部分 谢谢 我不需要的评论: %clear仅清除会话。它不会抹去历史 对。从现在起,我将只使用xSA_键 历史记录默认存储在$(ipython locate)/profile\u default/History.sqlite上。 您可以删除该文件,或对其

我一直在学习如何使用
paramiko
软件包,却发现我所有的密码都以明文形式存储在IPython的
%hist
中。不太好

因此,我需要去掉存储在
%hist
中的特定部分。这么说,我不想抹去整个历史只有那些我不小心输入了
password=
或类似术语的部分

谢谢


我不需要的评论:

  • %clear
    仅清除会话。它不会抹去历史
  • 对。从现在起,我将只使用xSA_键

    • 历史记录默认存储在
      $(ipython locate)/profile\u default/History.sqlite
      上。 您可以删除该文件,或对其执行任何操作(安全擦除等)。 它是一个sqlite文件,所以您可以用任何sqlite程序加载它并对其进行查询

      检查
      $(ipython locate)/profile\u default/
      和其他
      $(ipython locate)/profile\u xxx
      ,确保您没有任何其他历史文件
      $(ipython locate)
      通常是
      ~/.ipython/
      ,但可以变化:

      ls $(ipython locate)/profile_*/*.sqlite
      
      一种解决办法是:

      sqlite ~/.ipython/profile_default/history.sqlite
      
      delete from history where source like '%password =%';
      
      将“s”与“s”相结合:

      然后从sqlite控制台中:

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

      如果您想从一开始就完全删除,只需手动删除以下文件(它对我有效)


      /home/user/.ipython/profile\u default/history.sqlite

      我找不到有选择地擦除ipython历史记录的方法,但我找到了如何通过内置func、非sqlite方式擦除数据:

      %clear out#它清除输出历史记录


      顺便说一句,您还可以通过%clear in在历史记录中清除如果要从特定会话中删除历史记录,请运行:

      sqlite ~/.ipython/profile_default/history.sqlite
      
      请注意,在某些系统上,您需要运行
      sqlite3
      ,而不是
      sqlite

      SQLite内部:

      select * from history;
      # session is the first column in history
      delete from history where session=XXX;
      
      此外,这里还有一个SQLite查询,它将为您提供上一次会话的id:

      select session from history order by -session limit 1;
      

      嗯,
      $(ipython locate)
      给了我
      [TerminalIPythonApp]未找到的文件:u'locate'
      ,但我可以在
      ~/.ipython/profile\u default/history.sqlite找到它。
      注意,如果你只想删除所有内容,你可以用
      ipython history clear
      擦除整个历史。这不是选择性删除,您失去了历史记录中所有的好东西。如果这样做,您可能需要在
      ~/.sqlite\u history
      中删除sqlite3历史记录。
      select session from history order by -session limit 1;