本文整理汇总了Python中readline.get_current_history_length方法的典型用法代码示例。如果您正苦于以下问题:Python readline.get_current_history_length方法的具体用法?Python readline.get_current_history_length怎么用?Python readline.get_current_history_length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类readline
的用法示例。
在下文中一共展示了readline.get_current_history_length方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _history_update
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def _history_update(self, array=None):
if array is None:
array = []
try:
import readline
# add array elements to readline history
for command in array:
readline.add_history(command)
# recreate Hist from readline history (UGLY)
self.Hist.clear()
history_len = readline.get_current_history_length()
for i in range(1, history_len + 1):
line = readline.get_history_item(i)
self.Hist.append(line)
except ImportError:
pass
# By default, hist max size is 20% of CACHE_SIZE
max_size = int(self.Conf["CACHE_SIZE"]() * 0.2)
# Settle Hist object to its max size
while self.Hist.size > max_size:
self.Hist.pop(0)
示例2: refreshFromReadline
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def refreshFromReadline(self):
"""Consume as much content as possible from the line buffer.
Returns self, so that we can chain calls to this function and 'getlines'.
"""
newLines = []
#for some reason, this import segfaults if we do it as part of our routine
#setup in the test harness. Putting the import here ensures we only
#import it when we are actively using it (e.g. there is a terminal connected
#to stdin)
import readline
while len(self.lines) + len(newLines) < readline.get_current_history_length():
newLines.append(readline.get_history_item(len(self.lines) + len(newLines) + 1) + "\n")
self.lines += newLines
for block in self.divideIntoBlocks(newLines):
self.addBlock(block)
return self
示例3: testHistoryUpdates
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def testHistoryUpdates(self):
readline.clear_history()
readline.add_history("first line")
readline.add_history("second line")
self.assertEqual(readline.get_history_item(0), None)
self.assertEqual(readline.get_history_item(1), "first line")
self.assertEqual(readline.get_history_item(2), "second line")
readline.replace_history_item(0, "replaced line")
self.assertEqual(readline.get_history_item(0), None)
self.assertEqual(readline.get_history_item(1), "replaced line")
self.assertEqual(readline.get_history_item(2), "second line")
self.assertEqual(readline.get_current_history_length(), 2)
readline.remove_history_item(0)
self.assertEqual(readline.get_history_item(0), None)
self.assertEqual(readline.get_history_item(1), "second line")
self.assertEqual(readline.get_current_history_length(), 1)
示例4: setupReadline
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def setupReadline(local):
"""Initialize the readline library and command history.
@return: A C{bool} to indicate whether standard input is a terminal
(and therefore interactive).
"""
readline.parse_and_bind('tab: complete')
readline.set_completer_delims(' \t\n')
readline.set_completer(Completer(local).complete)
# Readline code from https://docs.python.org/3.7/library/readline.html
histfile = os.path.join(os.path.expanduser('~'), '.daudin_history')
try:
readline.read_history_file(histfile)
historyLen = readline.get_current_history_length()
except FileNotFoundError:
open(histfile, 'wb').close()
historyLen = 0
try:
readline.append_history_file
except AttributeError:
# We won't be able to save readline history. This can happen on
# Python 3.5 at least - not sure why.
pass
else:
import atexit
def saveHistory(prevHistoryLen, histfile):
newHistoryLen = readline.get_current_history_length()
readline.set_history_length(1000)
readline.append_history_file(newHistoryLen - prevHistoryLen,
histfile)
atexit.register(saveHistory, historyLen, histfile)
return True
示例5: do_exit
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def do_exit(self, line):
self.close()
if not self.execute_only_mode and readline.get_current_history_length() > 0:
readline.write_history_file(self.admin_history)
return True
示例6: get_history
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def get_history(self):
hist = []
for i in range(readline.get_current_history_length()):
hist.append(readline.get_history_item(i + 1))
return hist
示例7: do_history
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def do_history(self, argv):
"""Command line history
SYNOPSIS:
history [<COUNT>]
DESCRIPTION:
Returns a formatted string giving the event number and
contents for each of the events in the history list
except for current event.
If [COUNT] is specified, only the [COUNT] most recent
events are displayed.
> history
- Display the full history of events.
> history 10
- Display last 10 commands of the history.
"""
import readline
argv.append('9999999999')
try:
count = int(argv[1])
except ValueError:
return self.interpret("help history")
last = readline.get_current_history_length()
while last > session.Hist.MAX_SIZE:
readline.remove_history_item(0)
last -= 1
first = last - count
if first < 1:
first = 1
for i in range(first, last):
cmd = readline.get_history_item(i)
print("{:4d} {:s}".format(i, cmd))
####################
# COMMAND: exploit #
示例8: _call
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def _call(self, objs: Iterable[drgn.Object]) -> None:
stop = readline.get_current_history_length() + 1
if self.args.count is not None:
start = stop - self.args.count
else:
start = 1
for i in range(start, stop):
print(f"{i:5} {readline.get_history_item(i)}")
示例9: get_history_items
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def get_history_items() -> List[str]:
return list(map(readline.get_history_item, range(1, readline.get_current_history_length() + 1)))
示例10: do_history
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def do_history(self, _line):
"""
history
Show previously executed commands.
"""
try:
import readline
hist = readline.get_current_history_length()
for idx in range(1, hist + 1):
self.log(readline.get_history_item(idx))
except ImportError:
pass
示例11: process_history
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def process_history():
"""Processes python shell history to an array of code lines"""
end_index = len(PySession.ipython_history) - 1 if PySession.is_ipython \
else readline.get_current_history_length()
lines_of_code = []
for i in range(PySession.start_index, end_index):
if i in PySession.wrong_code_lines:
continue
if PySession.is_ipython:
line = PySession.ipython_history[i]
else:
line = readline.get_history_item(i)
# remove 'exit' and PySession keywords from code
if line.strip() in ['PySession.local()',
'PySession.gist()',
'PySession.off()',
'exit',
'exit()']:
continue
lines_of_code.append(line)
if len(
lines_of_code) > 0 and lines_of_code[-1] != '\n': # adding extra last newline
lines_of_code.append('\n')
return lines_of_code
示例12: test_write_read_append
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def test_write_read_append(self):
hfile = tempfile.NamedTemporaryFile(delete=False)
hfile.close()
hfilename = hfile.name
self.addCleanup(unlink, hfilename)
# test write-clear-read == nop
readline.clear_history()
readline.add_history("first line")
readline.add_history("second line")
readline.write_history_file(hfilename)
readline.clear_history()
self.assertEqual(readline.get_current_history_length(), 0)
readline.read_history_file(hfilename)
self.assertEqual(readline.get_current_history_length(), 2)
self.assertEqual(readline.get_history_item(1), "first line")
self.assertEqual(readline.get_history_item(2), "second line")
# test append
readline.append_history_file(1, hfilename)
readline.clear_history()
readline.read_history_file(hfilename)
self.assertEqual(readline.get_current_history_length(), 3)
self.assertEqual(readline.get_history_item(1), "first line")
self.assertEqual(readline.get_history_item(2), "second line")
self.assertEqual(readline.get_history_item(3), "second line")
# test 'no such file' behaviour
os.unlink(hfilename)
with self.assertRaises(FileNotFoundError):
readline.append_history_file(1, hfilename)
# write_history_file can create the target
readline.write_history_file(hfilename)
示例13: get_history_items
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def get_history_items():
"""
Get all history item
"""
return [
readline.get_history_item(i)
for i in xrange(1, readline.get_current_history_length() + 1)
]
示例14: remove_last_history_item
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def remove_last_history_item() -> None:
"""The user just typed a password..."""
last = readline.get_current_history_length() - 1
readline.remove_history_item(last)
示例15: isolate_io_context
# 需要导入模块: import readline [as 别名]
# 或者: from readline import get_current_history_length [as 别名]
def isolate_io_context(function):
"""A decorator for separating I/O context.
This decorator isolates I/O context of target
function or method.
I/O Context is a mix of terminal related elements,
such as current stdout and readline completer
attributes.
This decorator is useful if you run something
that reconfigures the readline completer, or
needs to use the default stdout file descriptor
instead of the phpsploit's stdout wrapper.
"""
def wrapper(*args, **kwargs):
try:
import readline
handle_readline = True
except ImportError:
handle_readline = False
if handle_readline:
# backup & reset readline completer
old_readline_completer = readline.get_completer()
readline.set_completer((lambda x: x))
# backup & reset readline history
old_readline_history = []
hist_sz = readline.get_current_history_length()
for i in range(1, hist_sz + 1):
line = readline.get_history_item(i)
old_readline_history.append(line)
readline.clear_history()
# backup & reset stdout
old_stdout = sys.stdout
sys.stdout = sys.__stdout__
try:
retval = function(*args, **kwargs)
finally:
if handle_readline:
# restore old readline completer
readline.set_completer(old_readline_completer)
# restore old readline history
readline.clear_history()
for line in old_readline_history:
readline.add_history(line)
# restore old stdout
sys.stdout = old_stdout
return retval
return wrapper