Bash: obtener la salida de finalización de un comando mediante programación (por ejemplo, en una variable)

¿Cómo aprovechar la finalización de otro comando mediante programación?

Supongamos que mi directorio actual tiene archivosa1, a2ya3, entonces, ¿cómo puedo hacer que mi comando invoque el autocompletado dels a volvera1 a2 a3?

es posible?

Aclaracion y justificacion:

elegíls porque la gente puede relacionarse con eso. Es un ejemplo artificial, pero permítanme tratar de ejemplificar el valor de esta característica. Tengo un comando llamadobuild que, dado un directorio, puede autocompletarse a los objetivos que se pueden construir en ese directorio. Esos objetivos pueden no corresponder a los archivos de ese directorio. Los objetivos pueden ser minados por elbuild comando de un archivo de compilación que no quiero analizar. En otras palabras:

build path/to/dir/LENGÜETALENGÜETA

Podría dar:

path/to/dir/a_target
path/to/dir/b_target

build es un comando preexistente, no es algo que pueda seguir adelante y modificar para adaptarlo a mis propósitos. Y la forma en que extrae sus objetivos es algo que ciertamente no quiero saber.

Ahora supongamos que tengo un repositorio completo debuildproyectos capaces, y la mayor parte de mi trabajo y, por lo tanto, la mayor parte de mibuild El trabajo ocurre en un solo proyecto. En otras palabras, siemprebuild algún objetivo bajomy/project/directory.

Hasta aquí todo bien.

Por lo tanto, quiero escribir un contenedor alrededor del comando de compilación que no requiera que alimente la ruta del directorio cada vez que lo ejecute. Quiero que conozca mi directorio de proyectos preferido (o directorios, por qué no) y me permita hacer referencia a los objetivos sin calificarlos:

Entonces, bajo el supuesto de que tengo:

my/project/directory/a_target
my/project/directoryb_target

Quiero esto:

mybuildLENGÜETALENGÜETA

para darme:

a_target
b_target

Por supuesto, tendré que escribir el código de finalización paramybuild, pero quiero que dependa de la finalización debuild, porque no puedo ir y preguntar a los desarrolladores debuild codificar unbuild listtargets comando solo para hacerme feliz. Esa característica ya está allí, en la finalización debuild, y necesito aprovecharlo.

(Por supuesto, cuando corromybuild a_target, sabrá correrbuild my/project/directory/a_target, y que sé cómo implementar y no está dentro del alcance de esta pregunta).

Espero que esto ilustre por qué necesito aprovechar la finalización de labuild comando y úselo como un cuadro negro.

Respuestas a la pregunta(3)

Su respuesta a la pregunta