O que são esses comandos sublinhados?

10

Quando estou tab tab _no terminal, Bash sugere 206 possibilidades. Tentei rodar um deles, _git_rmmas nada aconteceu, o que são?

Aqui está uma captura de tela:

insira a descrição da imagem aqui

desenhar
fonte
11
type _git_rmprovavelmente lhe dirá que é uma função. grep -R '_git_rm' /etc/bash_completion.d/provavelmente o encontrará. Essas funções são geralmente aquelas que fornecem as várias listas de bashconclusão para conclusão.
manatwork
@manatwork, por favor poste isso como resposta.
21813 derobert
@derobert, pretendia apenas fornecer uma dica rápida para que o proprietário da pergunta receba alguma coisa antes da resposta do especialista postar ~ 7 horas depois.
manatwork
@manatwork A resposta é suficiente para mim ... eu posso explorar mais sozinho: D Se você não se importa, eu aceitarei a resposta de Gilles, embora eu ache que deveria aceitar a sua ..
draw
@draw, a resposta de Gilles é provavelmente baseada em pesquisa e experiência, enquanto a minha é baseada em observações acidentais feitas durante o rastreamento de diretórios. Por favor aceite o dele.
21813 manatwork

Respostas:

12

Essas funções cujo nome começa com um sublinhado fazem parte do mecanismo de conclusão programável. O Bash segue a convenção do zsh aqui, onde a função que gera conclusões para somecommandé chamada _somecommande, se essa função exigir funções auxiliares, elas serão chamadas _somecommand_stuff.

Essas funções de conclusão normalmente não servem para nada ou geram um erro se você as chamar manualmente: elas devem ser chamadas pelo mecanismo de conclusão.

Isso segue uma prática bastante difundida em várias linguagens de programação para usar um sublinhado principal para indicar que uma função ou variável é de alguma forma interna a uma biblioteca e não se destina ao usuário final (ou programador final).

Gilles 'SO- parar de ser mau'
fonte