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:
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.
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