我正在Mac OS X上的默认python解释器上工作,我Cmd+K(清除)我之前的命令。我可以用方向键逐个浏览它们。但是bash shell中是否存在类似——history选项的选项,可以显示到目前为止输入的所有命令?
当前回答
这应该会让你在单独的行中打印出命令:
import readline
map(lambda p:print(readline.get_history_item(p)),
map(lambda p:p, range(readline.get_current_history_length()))
)
其他回答
使用readline.get_current_history_length()获取长度,并使用readline.get_history_item()查看每个长度。
打印整个历史的代码:
Python 3
一行代码(快速复制和粘贴):
import readline; print('\n'.join([str(readline.get_history_item(i + 1)) for i in range(readline.get_current_history_length())]))
(或者更长的版本…)
import readline
for i in range(readline.get_current_history_length()):
print (readline.get_history_item(i + 1))
Python 2
一行代码(快速复制和粘贴):
import readline; print '\n'.join([str(readline.get_history_item(i + 1)) for i in range(readline.get_current_history_length())])
(或者更长的版本…)
import readline
for i in range(readline.get_current_history_length()):
print readline.get_history_item(i + 1)
注意:get_history_item()的索引从1到n。
一个类似于unix/bash版本的简单函数来获取历史记录。
希望它能帮助到一些新人。
def ipyhistory(lastn=None):
"""
param: lastn Defaults to None i.e full history. If specified then returns lastn records from history.
Also takes -ve sequence for first n history records.
"""
import readline
assert lastn is None or isinstance(lastn, int), "Only integers are allowed."
hlen = readline.get_current_history_length()
is_neg = lastn is not None and lastn < 0
if not is_neg:
flen = len(str(hlen)) if not lastn else len(str(lastn))
for r in range(1,hlen+1) if not lastn else range(1, hlen+1)[-lastn:]:
print(": ".join([str(r if not lastn else r + lastn - hlen ).rjust(flen), readline.get_history_item(r)]))
else:
flen = len(str(-hlen))
for r in range(1, -lastn + 1):
print(": ".join([str(r).rjust(flen), readline.get_history_item(r)]))
代码段:用Python3测试。如果python2有任何故障,请告诉我。 样品:
完整历史:ipyhistory()
最近10个历史记录:ipyhistory(10)
历史:ipyhistory(-10)
希望它能帮助伙计们。
在IPython中,%history -g应该提供整个命令历史。
默认配置还将历史记录保存到用户目录中名为.python_history的文件中。
使用python3解释器,历史记录被写入 ~ / .python_history