There is something confuse me when I implement a bash auto-completion function which I\'ll put it in /etc/bash_completion.d/
In order to achieve som
Modifying $COMP_WORDBREAKS
in your completion script is not the recommended way (as it is a global variable and it could affect the behavior of other completion scripts - for example ssh).
However, bash completion offers some helper methods which you can use to achieve your goal.
The recommended way to handle non-word-breaking characters in completion words is by using the two helper methods:
_get_comp_words_by_ref
with the -n EXCLUDE
option __ltrim_colon_completions
So, here is a basic example of how to a handle a colon (:) in completion words:
_mytool()
{
local cur
_get_comp_words_by_ref -n : cur
# my implementation here
COMPREPLY=( $(compgen ..........my_implement......... -- $cur) )
__ltrim_colon_completions "$cur"
}
complete -F _mytool mytool
As a final tip, the helper methods are located in /etc/bash_completion
. Take a look inside to read a detailed description of each method and to discover more helper methods.