假设我有一个 bash 函数specialcat
,该cat
函数位于 ~/Special 目录中
specialcat () {
cat ~/Special/$1
}
假设 ~/Special 目录设置如下:
mkdir ~/Special
echo This is the first special file > ~/Special/firstfile
echo This is the second special file > ~/Special/secondfile
Specialcat 函数的用法如下:
> specialcat firstfile
This is the first special file
我想启用参数完成,以便
> specialcat firstf[TAB]
产生
> specialcat firstfile
无论当前工作目录是什么以及那里有什么文件。
这是我迄今为止的尝试
_options_specialcat () {
COMPREPLY=( $(compgen -W "$(ls ~/Special)") )
}
complete -F _options_specialcat specialcat
这导致
> specialcat firstf[TAB]
firstfile secondfile
> specialcat firstf
也就是说,在部分文件名上按 Tab 键将显示文件列表,但不会完成命令。
如何改变我的_options_specialcat
功能以产生所需的行为?
答案1
您需要按当前参数过滤列表,因此:
COMPREPLY=( $(compgen -W "$(ls ~/Special)" -- "$2") )