To pytanie jest dość podobne do tego , ale nie rozumiem rozwiązania. Znam również ten samouczek , ale nadal nie jestem w stanie zrozumieć, co robię źle.
Próbuję automatycznie uzupełnić listę katalogów umieszczonych w /something/
:
$ ls /something/
One Other Three
w taki sposób, aby tak się stało:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Tylko wtedy, gdy pierwsze słowo jest hi
i nie tylko w środku /something/
.
Oto co robię w .profile
:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
bash
filenames
autocomplete
Donovan
źródło
źródło
complete
polecenia, jeśli jeszcze go nie znasz i szukaszautocomplete
lubtab-completion
... To było pierwsze miejsce, w którym znalazłem nazwę polecenia i to, czego potrzebowałem, aby to naprawićeject
przy aktualizacji do Ubuntu 14.04 ($ complete -p ls
->complete -F _longopt ls
, więc poprawka byłacomplete -F _longopt eject
Pozwól, że poprawię przyjętą odpowiedź.
Oryginalna odpowiedź nie powiedzie się w przypadku nazw plików zawierających białe znaki. Po pewnym dochodzeniu zdaję sobie sprawę, że możesz zmienić separator wejściowy na koniec linii:
prawidłowe ustawienie funkcji obsługi spacji.
źródło
Oto wersja, która nie tylko obsługuje spacje, ale również je wymyka:
(Na podstawie dogbane 's i Eduardo Almeida Dos Santos ' odpowiedzi, ale z ucieczki przewidziane przez antak na SO: /programming//a/11536437/1536933 )
źródło
źródło