history コマンドの場合、具体的には、最も簡単な解決策は次のとおりです。
In [243]: history -t -f history.txt
In [244]: with open('history.txt') as f:
.....: HIST = [l.strip() for l in f]
.....:
In [245]: len(HIST)
Out[245]: 258
In [246]: HIST[-1]
Out[246]: "get_ipython().magic(u'history -t -f history.txt')"
In [247]:
基本的には、ファイルにダンプして読み戻します。
これは大雑把に思えるかもしれませんが、IPython の性質によるものだと思います。これは実際にはインタープリターではなく、基礎となるインタープリターのコマンド ライン シェルです。私の疑いでは、魔法のコマンドは IPython 内で処理され、コマンドをインタープリターに渡し、出力をキャプチャし、コマンド履歴に Out[n] として保存するという通常のパスを通過しません。そのため、リコールと割り当てには使用できません。
別の方法は、get_ipython().magic
単純に を返すことNone
です。
いずれにせよ、画面出力 d=for%history
は利用できません。ファイルにダンプする必要があります。
魔法のコマンドごとに異なるようです。alias
、たとえば、画面出力を返します
In [288]: a=%alias
Total number of aliases: 17
In [289]: a
Out[289]:
[('cat', 'cat'),
('clear', 'clear'),
('cp', 'cp'),
('ldir', 'ls -F -G -l %l | grep /$'),
('less', 'less'),
('lf', 'ls -F -l -G %l | grep ^-'),
('lk', 'ls -F -l -G %l | grep ^l'),
('ll', 'ls -F -l -G'),
('ls', 'ls -F -G'),
('lx', 'ls -F -l -G %l | grep ^-..x'),
('man', 'man'),
('mkdir', 'mkdir'),
('more', 'more'),
('mv', 'mv'),
('rm', 'rm'),
('rmdir', 'rmdir'),
(u'show', u'echo')]
In [290]: