автозаполнение tcsh и получение шаблона для другого автоконкурента

Возможно ли получить шаблон соответствия с завершенной оболочкой tc?

Я имею в виду, принимая команду 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


person snoofkin    schedule 22.12.2013    source источник
comment
Вы можете объяснить, для чего вы его использовали?   -  person shx2    schedule 22.12.2013
comment
@shx2 конечно, я бы хотел автозаполнение из XML-файла определенного формата.   -  person snoofkin    schedule 22.12.2013
comment
можете привести конкретный пример? что в xml?   -  person shx2    schedule 23.12.2013


Ответы (1)


Вот как бы я поступил. Во-первых, я бы использовал простой скрипт синтаксического анализа xml, чтобы распечатать пути. Вот один, который я придумал (вы можете легко написать свой собственный, используя 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-анализа:

% python xml_paths.py a.xml
c1
c2
c3
c3/c3-b2
c3/c3-b2/c3-xdr
person shx2    schedule 22.12.2013