Terminal de linux. Autocompletado.
Arnau Sanchez
arnau en ehas.org
Mar Nov 14 16:29:26 CET 2006
tny escribió:
> He visto que a la hora de escribir muchos comandos en el terminal de
> linux, se autocompletan con el tabulador.
>
> Quisiera que al pasar los parámetros a mis programas python se puediera
> emplear también el autocompletado.
>
Esto es ligeramente off-topic, pero en fin...
(Sólo conozco Debian, pero imagino que será similar en otras distros)
La bash tiene completado programable, es capaz de expandir
inteligentemente cualquier tipo de parámetro, no sólo ficheros y
directorios. Para activarlo para un usuario edita su ~/.bashrc y añade
(o normalmente, descomenta):
/etc/bash_completion ]; then
. /etc/bash_completion
fi
A partir de este momento (además de muchas otras cosas), comandos como
uname o wget expanden los parámetros con nombre largo (--xxxx) . ¿Cómo
lo hace? en vez de tenerlo guardado estáticamente en algún fichero (lo
que sería muy costoso de mantener, aunque en algunos casos -rsync- sí lo
hace así), usa la función _getops definida en /etc/bash_completion y
ejecuta al programa con "--help", parseando la salida. Si quieres que tu
programa esté incluido entre los que expande escribe:
complete -o default -F _longopt miscript.py
(y para que sea permanente, ponlo por ejemplo en .bashrc)
Puedes comprobar que otros programas hacen uso del longopt con:
complete -p | grep _longopt
Naturalmente, debes asegurarte que tu aplicación responde
convenientemente a un --help. En mis scripts python siempre uso el
módulo optparse para el control de parámetros (en vez de getopt, que me
parece más pobre) y el parseador entiende perfectamente su salida.
Usando convenientemente el completado de la bash se puede expandir de
todo: parámetros, nombres de host, de paquetes, servicios, nombres de
usuario, etc, es una herramienta muy potente.
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es