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
, a2
ya3
, 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 debuild
proyectos 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:
mybuild
LENGÜ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.