大家好,大家好
我正在编写一个客户机-服务器程序,它基本上给了我一个bind shell。我使用Cmd库自动完成绑定shell中的文件名和文件夹。我正在编写自动完成的do\u cd和complete\u cd函数
到目前为止,我只能用tab键完成当前文件夹的子文件夹
我的complete_cd功能现在看起来像这样:
def complete_cd(self, text, line, begidx, endidx):
if not text:
completions = self.subfolders[:] #subfolders contains list of sub folders of current folder
else:
completions = [f for f in self.subfolders if f.startswith(text)]
我被困在一个点上,我想完成以下内容: cd/us{tab}/sh{tab}哪个应该做cd/usr/share。 我尝试使用os.walk(“/”)从客户端获取所有文件夹路径,并将其附加到列表中。现在,根据斜杠的数量,我创建了一个字典。例如:dict.get(1)将包含'/dev\n/home\n/media\n…'即只有一个斜杠的文件夹,dict.get(2)将包含'/etc/apache2\n/etc/apt\n…'即有两个斜杠的文件夹,依此类推
但是我不知道如何把这个逻辑放到完整的函数中
我想写的是:
if text.startswith('/'):
slash_counter = text.count('/')
dir_list = list(filter(None, self.dict[slash_counter].split('\n')))
completions = [f for f in dir_list if f.startswith(text)]
如果有人能提出任何其他方法,那也没关系
感谢您的帮助
目前没有回答
相关问题 更多 >
编程相关推荐