Что это за команды подчеркивания?

10

Когда я tab tab _в терминале, Bash предлагает 206 возможностей. Я пытался запустить один из них, _git_rmно ничего не случилось, что они?

Вот скриншот:

введите описание изображения здесь

привлечь
источник
11
type _git_rmвероятно скажу вам, что это функция. grep -R '_git_rm' /etc/bash_completion.d/вероятно найдет это. Этими функциями обычно являются те, которые предоставляют различные списки bashзавершения для завершения.
manatwork
@manatwork, пожалуйста, опубликуйте это как ответ.
Дероберт
@derobert, я только хотел дать подсказку, чтобы владелец вопроса получил что-то до того, как ответ эксперта будет опубликован ~ 7 часов спустя.
Манатворк
@manatwork Мне достаточно ответа ... Я могу исследовать больше самостоятельно: D Если ты не возражаешь, я приму ответ Жиля, хотя я думаю, что я должен принять твой ..
рисовать
@draw, ответ Жиля, вероятно, основан на исследованиях и опыте, в то время как мой основан на случайных наблюдениях, сделанных во время сканирования каталога. Пожалуйста, примите его.
manatwork

Ответы:

12

Эти функции, чье имя начинается с подчеркивания, являются частью программируемого механизма завершения. Bash следует конвенции ЗШ здесь, где функция , которая генерирует автозаполнения somecommandназывается _somecommand, и если эта функция требует вспомогательных функций, они называются _somecommand_stuff.

Эти функции завершения обычно ничего не делают или не вызывают ошибку, если вы вызываете их вручную: они предназначены для вызова из механизма завершения.

Это следует из довольно распространенной практики в различных языках программирования, чтобы использовать начальное подчеркивание, чтобы указать, что функция или переменная каким-то образом являются внутренними по отношению к библиотеке и не предназначены для конечного пользователя (или конечного программиста).

Жиль "ТАК - перестань быть злым"
источник