我正在Mac OS X上的默认python解释器上工作,我Cmd+K(清除)我之前的命令。我可以用方向键逐个浏览它们。但是bash shell中是否存在类似——history选项的选项,可以显示到目前为止输入的所有命令?


当前回答

使用readline.get_current_history_length()获取长度,并使用readline.get_history_item()查看每个长度。

其他回答

这应该会让你在单独的行中打印出命令:

import readline
map(lambda p:print(readline.get_history_item(p)),
    map(lambda p:p, range(readline.get_current_history_length()))
)

@Jason-V,真的很有帮助,谢谢。然后,我找到了这个例子,并组成了自己的片段。

#!/usr/bin/env python3
import os, readline, atexit
python_history = os.path.join(os.environ['HOME'], '.python_history')
try:
  readline.read_history_file(python_history)
  readline.parse_and_bind("tab: complete")
  readline.set_history_length(5000)
  atexit.register(readline.write_history_file, python_history)
except IOError:
  pass
del os, python_history, readline, atexit 

在IPython中,%history -g应该提供整个命令历史。

默认配置还将历史记录保存到用户目录中名为.python_history的文件中。

使用readline.get_current_history_length()获取长度,并使用readline.get_history_item()查看每个长度。

如果你想把历史记录写入一个文件:

import readline
readline.write_history_file('python_history.txt')

help函数给出:

Help on built-in function write_history_file in module readline:

write_history_file(...)
    write_history_file([filename]) -> None
    Save a readline history file.
    The default filename is ~/.history.