Don*_*van 17 bash autocomplete filenames
这个问题是非常相似这一个,但我不明白的解决方案。我也知道这个教程,但我仍然无法理解我做错了什么。
我正在尝试自动完成放置在以下位置的目录列表/something/:
$ ls /something/
One Other Three
Run Code Online (Sandbox Code Playgroud)
在某种程度上,这将发生:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Run Code Online (Sandbox Code Playgroud)
只有当第一个词是,hi而不是只有里面/something/。
这就是我在做什么.profile:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
Run Code Online (Sandbox Code Playgroud)
dog*_*ane 16
尝试:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(ls /something/)" -- $cur) )
}
complete -F _codeComplete hi
Run Code Online (Sandbox Code Playgroud)
您需要指定-W选项 incompgen并引用生成单词列表的命令。
有关如何在此博客上编写完成函数的更多信息:编写您自己的 Bash 完成函数