Esta pregunta es bastante similar a esta , pero no puedo entender la solución. También conozco este tutorial , pero aún no puedo entender lo que estoy haciendo mal.
Estoy tratando de completar automáticamente la lista de directorios que se encuentran en /something/
:
$ ls /something/
One Other Three
de una manera que esto sucederá:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Solo cuando la primera palabra es hi
y no solo adentro /something/
.
Esto es lo que estoy haciendo en .profile
:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
bash
filenames
autocomplete
Donovan
fuente
fuente
complete
comando si aún no lo sabe y está buscandoautocomplete
otab-completion
... Este fue el primer lugar donde encontré el nombre del comando, y para lo que necesitaba arreglarloeject
en la actualización a Ubuntu 14.04 ($ complete -p ls
->complete -F _longopt ls
, entonces la solución fuecomplete -F _longopt eject
Permítanme tratar de mejorar la respuesta aceptada.
La respuesta original fallará con los nombres de archivo que contienen espacios en blanco. Después de investigar un poco, me doy cuenta de que puede cambiar el separador de entrada al final de la línea:
haciendo que la función maneje espacios correctamente.
fuente
Aquí hay una versión que no solo maneja espacios, sino que también los escapa:
(Basado en las adelfas 's y Eduardo Almeida dos Santos ' respuestas, pero con escapar a lo dispuesto por antak en SO: /programming//a/11536437/1536933 )
fuente
fuente