функция помощи readline и автозаполнение - PullRequest
0 голосов
/ 25 октября 2011

я готов создать такой же проект, как JUNOS cli или cisco cli,

Я прошел через gnu readline, но я запутался, так как слишком много функций и методов для реализации. любой, как я хочу, чтобы Cli с автоматическим завершением с использованием табуляции и пробел с вопросительным знаком для отображения команд с текстом справки.

У меня два вопроса:

  1. Я нашел код на python и perl, но я не использую для python этот код, и я просто хочу знать, стоит ли мне продолжать работу с python. Я более опытный в Perl, но код, который я нашел, не является полным для Perl.
  2. readline.parse_and_bind('tab: complete')

следует ли мне использовать одну и ту же полную функцию как для справки, так и для функции автозаполнения. где, как я прошел через другую функцию

readline.set_completion_display_matches_hook(print_suggestions)

что вы предлагаете: P im совершенно новый для него!

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Я должен сказать, что я изо всех сил пытаюсь понять, к какому конкретному вопросу вы обращаетесь в своем вопросе. Но в любом случае есть предложение:

Начните с модуля cmd . Это дает вам хорошую небольшую структуру для создания интерпретатора командной строки. Он поддерживает завершение табуляции из коробки (при условии, что readline доступен). Начните реализовывать интерфейс командной строки. Как только это стабилизируется, вы можете подумать о добавлении большего комфорта, например, завершение табуляции для аргументов команды, клавиш справки и тому подобного. Таким образом, у вас есть рабочее приложение, с которым вы можете иметь дело, и можете более детально обращаться к деталям readline, когда они вам действительно нужны. Я бы не стал изучать весь API readline заранее, если бы я был на вашем месте.

0 голосов
/ 06 июня 2015

Нам пришлось создать cli, как JunOS / Cisco / VyOS, и мы создали его поверх ishell, который использует readline для этой работы.

Со страницы проекта:

ishell поможет вам легко создать интерактивную оболочку для вашего приложения.Он поддерживает завершение команд, динамические аргументы, историю команд и цепочку команд.

Вы можете проверить проект на github: https://github.com/italorossi/ishell

Пример Cisco: enter image description here

PS: я автор :).

...