bash 使用通配符完成自定义制表符

bash 使用通配符完成自定义制表符

我有一个脚本(我们称之为myscript),我想为具有特定扩展名(例如.txt)的文件启用自动完成参数。我可以简单地通过以下方式做到这一点:

complete -f -X '!*.txt' myscript

然后,给定文件aba.txtb.txtab.txt输入“myscript”并按两次 Tab 键会得到:

$ myscript
a.txt  ab.txt  b.txt

我想要做的是允许通配符进一步过滤,例如,如果我输入“myscript *b*”并按两次 Tab 键,我想看到:

$ myscript *b*
ab.txt  b.txt

不幸的是,这并没有给我任何自动完成功能。如果我删除自定义自动完成(或传递-o bashdefaultcomplete),它会给我:

$ myscript *b*
ab.txt  b  b.txt

如果我按 Enter 键,我不想看到b结果或将其传递给脚本。有什么办法可以解决这个问题吗?

相关内容