Completación en shell

Definición

Por "completación" ("completion") entendemos la funcionalidad del shell de "completar" las palabras que se teclean de forma interactiva; así por ejemplo, si comenzamos a escribir

	cd /usr/lo
	
el shell puede automáticamente completarlo a
	cd /usr/local
	

Cada shell incluye diferentes opciones de "completación", siendo lo más habitual el uso de la tecla "tabulador" para activarlo.

Para más detalles se recomienda consultar las páginas de manual de cada shell utilizado, no obstante, aquí incluimos algunos detalles resumidos. (Respondiendo así a la pregunta frecuente: "¿Cómo puedo hacer que funcione el completado con tabulador en hendrix?")

Explicación

En hendrix, las cuentas por defecto están configuradas con el shell "ksh" (por ser el estándar de Solaris). Es posible elegir otro shell utilizando el interfaz web de cambio de shell.

ksh tiene "completación", pero tradicionalmente se dispara con las teclas "ESC-\", no con "TAB". Veamos lo que dice el FAQ de ksh:

Q6.     Does ksh support file name completion?
A6.     Yes, it does.  The default key binding is <ESC><ESC>
        however, starting with the 'g' point release, <TAB> also works
        for completion.  Note, the vi users need to set -o viraw
        in order to get <TAB> completion to work.

Q7.     Does ksh support command completion?
A7.     If you perform completion on the first word of a command,
        ksh will do completion using aliases, functions, and commands.

Q8.     Is completion programmable?
A8.     Yes, using the key binding mechanism, you can script the behavior
        of any key and therefore cause the current contents of any
        line to be replaced by any other line.
	
Nota: Lo de <ESC><ESC> funciona solo en modo "set -o emacs"; por defecto todas las cuentas del DIIS estan en modo "set -o vi".

Ahora bien, todo esto depende de la configuración y de las versiones de ksh disponibles.

Así pues, tenemos:

Resumen y recomendaciones

Si se está acostumbrado a la forma de trabajar de "bash", lo recomendado es cambiarse el shell a "bash" como se ha explicado antes.


Last Modified: December 22, 2010