Pertanyaan ini sangat mirip dengan yang ini , tetapi saya tidak dapat memahami solusinya. Saya juga tahu tutorial ini , tetapi saya masih tidak dapat memahami apa yang saya lakukan salah.
Saya mencoba untuk melengkapi secara otomatis daftar direktori yang ditempatkan di /something/
:
$ ls /something/
One Other Three
dengan cara ini akan terjadi:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Hanya ketika kata pertama hi
dan tidak hanya di dalam /something/
.
Inilah yang sedang saya lakukan .profile
:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
bash
filenames
autocomplete
Donovan
sumber
sumber
complete
perintah jika Anda belum mengetahuinya dan sedang mencariautocomplete
atautab-completion
... Ini adalah tempat pertama saya menemukan nama perintah, dan apa yang saya butuhkan untuk memperbaikinya saateject
upgrade ke Ubuntu 14,04 ($ complete -p ls
->complete -F _longopt ls
, jadi perbaikannya adalahcomplete -F _longopt eject
Biarkan saya mencoba memperbaiki jawaban yang diterima.
Jawaban asli akan gagal dengan nama file yang mengandung spasi. Setelah beberapa penyelidikan saya menyadari Anda dapat mengubah pemisah input ke end-of-line:
membuat fungsi menangani spasi dengan benar.
sumber
Berikut ini adalah versi yang tidak hanya menangani spasi, tetapi juga melewatinya:
(Berdasarkan jawaban dogbane dan Eduardo Almeida dos Santos , tetapi dengan melarikan diri sebagaimana diberikan oleh antak pada SO: /programming//a/11536437/1536933 )
sumber
sumber