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- gets the word-to-complete without considering the characters in EXCLUDE as word breaks
__ltrim_colon_completions
- removes colon containing prefix from COMPREPLY items
(a workaround for http://tiswww.case.edu/php/chet/bash/FAQ – E13)
- removes colon containing prefix from COMPREPLY items
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.