makefile bash-completion

bash finalización del objetivo makefile



bash-completion (4)

¿Podría ser esto lo que estás buscando?

http://freshmeat.net/projects/bashcompletion/

make [Tab] se completaría en todos los objetivos en Makefile. Este proyecto fue concebido para producir rutinas de finalización programables para los comandos más comunes de Linux / UNIX, reduciendo la cantidad de administradores de sistemas y programadores que tienen que hacer diariamente.

Supongamos que tengo un makefile simple como:

hello: echo "hello world" bye: echo "bye bye"

Entonces en bash quiero algo como:

hacer h <pestaña>

para que pueda completar a

hacer hola

Encontré una forma simple como crear archivos vacíos, hello y bye pero estoy buscando algo más sofisticado .


Agregue esto en su archivo ~ / .bash_profile o archivo ~ / .bashrc

complete -W "/`grep -oE ''^[a-zA-Z0-9_.-]+:([^=]|$)'' Makefile | sed ''s/[^a-zA-Z0-9_.-]*$//''/`" make

Esto busca un objetivo en su Makefile titulado '' Makefile '' (note la capital M) usando grep, y lo pasa al comando completo en bash que se usa para especificar cómo se completan los argumentos. El indicador -W denota que la entrada al comando ''completar'' será una lista de palabras que se realiza al pasar los resultados de grep a través de sed, que la organiza en el formato de lista de palabras deseable.

Advertencias y trampas:

  1. Su archivo make se llama ''GNUMakefile'' o ''makefile'' o cualquier otra cosa que no sea ''Makefile''. Si encuentra con frecuencia estos títulos, simplemente agregue otra línea con el mismo formato que el anterior, pero con el título deseado de makefile en lugar de ''Makefile'' en su archivo ~ / .bashrc o ~ / .bash_profile.

  2. Olvidando la fuente de su archivo ~ / .bash_profile o ~ / .bashrc después de hacer los cambios. Agrego este detalle aparentemente trivial ya que a los no iniciados no les resulta familiar. Para que cualquier cambio en tus archivos bash tenga efecto, obténgalos utilizando el comando

    source ~/.bashrc

    o

    source ~/.bash_profile

PD. Ahora también tiene la capacidad adicional de mostrar los posibles objetivos de marcación presionando [Tab] dos veces al igual que para completar el bash. Solo asegúrese de agregar un espacio después del comando make antes de escribir [Tab] dos veces.


En Ubuntu 10.04, fuente el siguiente archivo:

. /etc/bash_completion

o descomentarlo en

/etc/bash.bashrc


Esto parece ser predeterminado en al menos Debian Lenny:

$ grep Makefile /etc/bash_completion # make reads `GNUmakefile'', then `makefile'', then `Makefile'' elif [ -f ${makef_dir}/Makefile ]; then makef=${makef_dir}/Makefile # before we scan for targets, see if a Makefile name was # deal with included Makefiles

El encabezado de este archivo indica:

# The latest version of this software can be obtained here: # # http://bash-completion.alioth.debian.org/ # # RELEASE: 20080617.5