Jakie są te polecenia podkreślenia?

10

Kiedy jestem tab tab _w terminalu, Bash sugeruje 206 możliwości. Próbowałem uruchomić jedną z nich, _git_rmale nic się nie stało, czym one są?

Oto zrzut ekranu:

wprowadź opis zdjęcia tutaj

remis
źródło
11
type _git_rmprawdopodobnie powie ci, że jest to funkcja. grep -R '_git_rm' /etc/bash_completion.d/prawdopodobnie to znajdzie. Te funkcje to zwykle te, które zapewniają różne listy ukończeń do bashuzupełnienia.
manatwork
@manatwork prześlij to jako odpowiedź.
derobert
@derobert, chciałem jedynie podać szybką wskazówkę, aby właściciel pytania otrzymał coś, zanim odpowiedź eksperta zostanie opublikowana ~ 7 godzin później.
manatwork
@manatwork Odpowiedź jest dla mnie wystarczająca ... Mogę dowiedzieć się więcej: D Jeśli nie masz nic przeciwko, zaakceptuję odpowiedź Gillesa, choć myślę, że powinienem zaakceptować twoją ...
losowanie
@draw, odpowiedź Gillesa jest prawdopodobnie oparta na badaniach i doświadczeniu, a moja na przypadkowych obserwacjach poczynionych podczas przeszukiwania katalogów. Proszę, zaakceptuj jego.
manatwork

Odpowiedzi:

12

Funkcje, których nazwa zaczyna się od znaku podkreślenia, są częścią programowalnego silnika uzupełniania. Bash postępuje zgodnie z konwencją zsh, w której wywoływana somecommandjest funkcja generująca uzupełnienia _somecommand, a jeśli funkcja ta wymaga funkcji pomocniczych, są one wywoływane _somecommand_stuff.

Te funkcje uzupełniania zwykle nie robią nic użytecznego ani nie zgłaszają błędu, jeśli wywołasz je ręcznie: mają być wywoływane z silnika uzupełniania.

Wynika to z dość powszechnej praktyki w różnych językach programowania, aby używać wiodącego znaku podkreślenia, aby wskazać, że funkcja lub zmienna jest w jakiś sposób wewnętrzna w bibliotece i nie jest przeznaczona dla użytkownika końcowego (lub programisty końcowego).

Gilles „SO- przestań być zły”
źródło