到目前为止是否可以通过tc shell完成匹配模式?
我的意思是,假设命令A,并执行:
A[TAB]
c1
c2
c3
A c3[TAB]
< - 这里我想完成以执行匹配模式的命令:c3 ....
更新:基本上我正在尝试从XML自动填充。
<xml>
<key name="c1"></key>
<key name="c2"></key>
<key name="c3">
<key name="c3-b2">
<key name="c3-xdr"></key>
</key>
</key>
</xml>
所以基本上我希望能够像以下一样自动完成: 的 C3 [TAB] / C3-B2 [TAB] / C3-XDR
我目前正在尝试将Term::ReadLine::Gnu
与 Perl 一起使用。
,不,我不能使用Bash
答案 0 :(得分:0)
以下是我如何去做。首先,我使用一个简单的xml-parsing脚本来打印出路径。这是我提出的一个(您可以使用perl轻松编写自己的一个,或者只使用这个):
# xml_paths.py
import sys
from xml import sax
class PathHandler(sax.handler.ContentHandler):
def __init__(self):
self.path = []
def startElement(self, name, attrs):
if name == 'key':
self.path.append(attrs['name'])
print '/'.join(self.path)
def endElement(self, name):
if name == 'key':
self.path.pop()
sax.parse(sys.argv[1], PathHandler())
最后,complete
它(你应该使用脚本和xml文件的绝对路径):
% complete A 'p#*#`python xml_paths.py a.xml`#'
% A <TAB>
c1 c2 c3 c3/c3-b2 c3/c3-b2/c3-xdr
% A c3/<TAB>
c3/c3-b2 c3/c3-b2/c3-xdr
% A c3/c3-b2
为清楚起见,这是xml-parsing脚本的输出:
% python xml_paths.py a.xml
c1
c2
c3
c3/c3-b2
c3/c3-b2/c3-xdr