Linux y programación
Noticias, dudas y soluciones de Linux y programación

El tiempo en Badajoz

Sugerencias:

Esta bitácora fue creada por linuxcpp el día 24-09-06. Se han publicado 102 historias y 158 comentarios.


Foto del creador
Nombre: linuxcpp
Descripción: José Ramón Rubio
Localidad: Caceres
E-mail

Llamame con Gizmo

¿Qué le parece la nueva distribución gnuLinex 2006?
Excelente
Muy buena
Buena
Normal
Mala
Pésima

Ver resultados
Ver comentarios

    <<  Septiembre 2010  >>
    DomLunMarMieJueVieSab
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  

Powered by eXtreblog  Use OpenOffice.org Add to Technorati Favorites  Bitacoras.com


Free Software Top
gnuLinEx 2006: de SARGE A ETCH: Última actualización: 12/01/2008

Auto-Completar en terminales BASH con tecla TAB
Autor: linuxcpp _ URL _ Tb () _ Categorias: LINUX- Utilidades

AUTO-COMPLETAR en terminales
BASH con tecla TAB



    La utilidad de auto-completar en terminales BASH es de sobra conocida y una utilidad muy interesante. Por poner un ejemplo de uso, supongamos que queremos escribir el comando gimp 04042008478.jpg; lo que haríamos es escribir en el terminal los primeros caracteres del comando (gim por ejemplo)  y pulsar 2 veces seguidas la tecla TABulador, completando directamente el comando a gimp, o mostrando en su defecto los comandos disponibles que comienzan por esas combinaciones de letras. De igual modo, para la segunda palabra que sería una imagen del directorio en el que nos encontramos podríamos empezar a escribir los primeros caracteres (04 por ejemplo), y automáticamente se mostrarán aquellos archivos (habitualmente sólo formatos de imágenes válidos) del directorio que comiencen con esos caracteres. Esto es sin duda una de las principales ventajas que tienen los terminales BASH de sistemas UNIX.

  A continuación veremos como se activa y desactiva esta opción, así como podemos configurarlo personalizándolo a nuestro gusto.
  Para configurar el auto-completar de BASH usaremos la sentencia complete, tal y como veremos en el siguiente ejemplo:
    complete -f -X ’!*.@(sxw|stw|sxg|sg1|doc|dot|rtf|txt|htm|html|odt|ott|odm)’ oowriter

Donde:
  La opción -f significa que se intenta auto-completar con nombres de ficheros.
  La opción -X especifica que a continuación se le pasa un patrón del nombre de dichos ficheros.
  A continuación se pasa el PATRÓN (Entre comillas simples ): El carácter ! representa que cuando se finalice el nombre del fichero, se estarán eliminando los términos que no combinen con el patrón. La expresión *.@(extensiones) significa cualquier término será aceptado siempre y cuando tenga una extensión seguida de un punto que sea válida. Lo que va entre paréntesis nombrado como expresiones serían aquellas extensiones válidas separadas por el carácter de unión |.
  Por último, el nombre oowriter especifica el comando al cual se aplica todo el contenido de esta línea.

  Con este ejemplo lo que conseguimos es que cuando en un terminal BASH escribimos oowriter FICHERO, y ese FICHERO intentamos auto-completarlo con la tecla de tabulación, sólo mostrará aquellos nombres de ficheros válidos que se ajusten a dicho patrón, es decir, sólo formatos  de texto válidos que puedan ser abierto con el programa oowriter.



  Conociendo el funcionamiento de esta instrucción, podemos modificar a nuestro antojo la configuración de los auto-completar, añadiendo nuevos formatos para ciertos programas, añadiendo configuración para nuevos programas, etc. Además de configurar auto-completar para nombres de ficheros podemos configurar otro tipo de eventos como nombres de rutas, variables... y que podeis encontrar explicado en esta web.

  Podríamos tener configuradas tantas líneas de este tipo como deseáramos, una para cada programa por ejemplo, lo que es un engorro si lo tuviéramos que hacer nosotros. La habitual es que la configuración ya la tengais en vuestro sistema, pudiendo modificar su configuración si lo deseáramos, siendo la ruta más probable para esta configuración el fichero /etc/bash_completion, pero en todo caso en la web arriba mencionada podeis descargar el paquete con este fichero.

  Cuando arrancamos un terminal BASH, lo primero que hacemos es cargar el fichero /etc/bash.bashrc que será el sitio más habitual para localizar las sentencias que activan el funcionamiento del auto-completar, y que son las que a continuación se muestran. En caso de querer desactivar la opción de autocompletar bastaría con comentar o eliminar dichas líneas de este fichero. El código que permite activar el auto-completar en terminales BASH es:

        if [ "$PS1" -a -f /etc/bash_completion ]; then
            . /etc/bash_completion
        fi

  Añadir este código en este fichero implica que a todos los usuarios del sistema se le habilite esta opción, lo que suele ser lo más común. Sin embargo, si deseamos tener una configuración más específica para cada usuario podemos añadir estas líneas en el fichero $HOME/.bashrc (que es un fichero propio para cada usuario del sistema), y de este modo sólo afectaría al usuario correspondiente.



Comentarios (2)
MeneameMenéame Barrapunto Barrapunto Technorati Technorati Google Google Bookmarks Fresqui Fresqui Delicious del.icio.us
VOTACIÓN: Votos(Núm. votos: 14)

RESPUESTA A Auto-Completar en terminales BASH con tecla TAB
Autor: Luis Ramon _ URL _ Tb () _ Categorias:

Acabo de encontrarme con tu blog y sólo te pongo el comentario para decirte que me ha encantado. Ya te tengo en favoritos ;)

RESPUESTA A Auto-Completar en terminales BASH con tecla TAB
Autor: Santiago _ URL _ Tb () _ Categorias:

¡Gracias! Tenía esta duda desde hace tiempo. no obstante, lo probé con un programa que me interesaba (un visor de documentos, el djview4) y el problema que tengo es que ahora no completa los directorios. Es decir, si tengo el archivo 'hola.djvu' en la carpeta ~/documentos, no sirve escribir

~/djview4 doc

sino que debo ingresar primero a la carpeta y después sí funciona... ¿Sabes cómo solucionar eso?
Gracias de todos modos.

Escribe tu comentario


Usuario de eXtreblog (sí/no)

Nombre:

Contraseña:
?


Comentario:

Escribe el resultado de la suma:






"Linux y programación"
I would love to change the world, but they won't give me the source code