¿Qué son esos comandos de subrayado?

10

Cuando estoy tab tab _en la terminal, Bash sugiere 206 posibilidades. Traté de ejecutar uno de ellos _git_rmpero no pasó nada, ¿qué son?

Aquí hay una captura de pantalla:

ingrese la descripción de la imagen aquí

dibujar
fuente
11
type _git_rmprobablemente te dirá que es una función. grep -R '_git_rm' /etc/bash_completion.d/Probablemente lo encuentre. Esas funciones suelen ser las que proporcionan las diversas listas de bashfinalización para completar.
manatwork
@manatwork, publíquelo como respuesta.
derobert
@derobert, solo pretendía proporcionar una pista rápida para que el propietario de la pregunta obtenga algo antes de que la respuesta experta se publique ~ 7 horas más tarde.
manatwork
@manatwork La respuesta es suficiente para mí ... Puedo explorar más por mí mismo: D Si no le importa, voy a aceptar anwser de Gilles aunque creo que debería aceptar la suya ..
dibujar
@draw, la respuesta de Gilles probablemente se basa en la investigación y la experiencia, mientras que la mía se basa en observaciones accidentales realizadas durante el rastreo de directorios. Por favor acepte el suyo.
manatwork

Respuestas:

12

Estas funciones cuyo nombre comienza con un guión bajo forman parte del motor de finalización programable. Bash sigue la convención de zsh aquí, donde somecommandse llama a la función que genera terminaciones para _somecommand, y si esa función requiere funciones auxiliares, se llaman _somecommand_stuff.

Estas funciones de finalización generalmente no hacen nada útil o generan un error si las llama manualmente: están destinadas a ser llamadas desde el motor de finalización.

Esto sigue una práctica bastante extendida en varios lenguajes de programación para usar un guión bajo principal para indicar que una función o variable es de alguna manera interna a una biblioteca y no está destinada al usuario final (o programador final).

Gilles 'SO- deja de ser malvado'
fuente