Я проверил optcomplete
, работая с модулем optparse
. Его пример - простой файл, поэтому я мог бы заставить его работать. Я также тестировал его с помощью модуля argparse
, поскольку предыдущий устарел. Но я действительно не понимаю, как и кем программа python вызывается на вкладках. Я подозреваю, что bash
вместе с линией shebang
и модуль argparse
(или optparse
) задействованы в некотором роде. Я пытался понять это (теперь я буду читать исходный код).Как argpse (и устаревший optparse) реагируют на нажатие клавиши «tab» после имени программы python в bash?
У меня есть более сложная структура программы, которая включает оболочку вокруг фрагмента кода, который обрабатывает аргументы. Его экземпляр argparse.ArgumentParser()
и звонки на add_argument()
, которые переклассифицированы в другой промежуточный модуль, чтобы избежать дублирования кода, и обертка вокруг вызываемого - находятся внутри функции.
Я хочу понять, как работает эта закладка между bash и python (или, в этом отношении, любой другой интерпретатор, такой как perl
).
ПРИМЕЧАНИЕ: У меня есть справедливое понимание завершения bash (которое я узнал только сейчас), и я думаю, что понимаю, что bash (только) выполнено по заказу.
Примечание: Я читал другие подобные вопросы SO, и никто на самом деле не ответить на этот Q.
Edit: Here функция Баш.
я уже понял, как модуль питона узнает о словах, набранных в командной строке, читая os.environ
значения переменных
$COMP_WORDS
$COMP_CWORD
$COMP_LINE
$COMP_POINT
$COMPREPLY
Эти переменные имеют значения только на вкладке печати. Мой вопрос в том, как запускается модуль python?
Документы 'optcomplet' говорят:« Вам также необходимо указать функцию Bash, а затем сообщить Bash, чтобы вызвать завершение оппонента для конкретных программ, которые его используют: «. Если вы это сделали, почему вы все еще спрашиваете, как это работает? Должно быть очевидно, что вам просто нужно сообщить bash, какую программу вызывать, если запрашивается завершение. –
Извините, я неправильно понял, что я читал. Я добавлю для этого ответ. –