In a bash completion script, suppose COMPREPLY=(aa/ba/ aa/bb/)
. When the script is invoked, the completion options looks like this to the user:
$ foo aa/b<TAB>
aa/ba/
aa/bb/
However, I want to have a bit more control over how these options are displayed. In particular, I want to show only a substring of each COMPREPLY option to the user, similar to how directory completion works in bash now:
$ foo aa/b<TAB>
ba/
bb/
Is there any way of doing this in bash?
I was having the same problem and I fixed it by adjusting how I bound the completion function to the command. I know this works when you are dealing with actual files in the filesystem, I think it will work with any sort of file path like options, but I'm not sure.
Before:
After:
For more details: Programmable Completion Builtins
This piece of code taken from debian sid /etc/bash_completion should help: