vsh: Fix completion error in case of multiple mac addresses

We know that the bash completer automatically handle colon by preceding
it with an escape character backslash.
While our bash autompletion file vsh completes multiple items, In case
there're multiple items which have same prefix and the content of completion
items contain colon(say mac address), The vsh needs to correctly hands
the backslash which are added by bash completer, Otherwise the completion
won't be successful. This patch fixes this problem.

e.g.:

 # virsh domiflist --domain VM
 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 vnet0       network   default   virtio   52:54:00:fb:7b:f5
 vnet1       bridge    br0       virtio   52:54:00:80:1b:21

Before:
 # virsh detach-interface --domain VM --mac <TAB>
 # virsh detach-interface --domain VM --mac 52\:54\:00\:<TAB><TAB>

After:
 # virsh detach-interface --domain VM --mac <TAB>
 # virsh detach-interface --domain VM --mac 52\:54\:00\:<TAB><TAB>
 52:54:00:80:1b:21  52:54:00:fb:7b:f5
 # virsh detach-interface --domain VM --mac 52\:54\:00\:

Signed-off-by: Lin Ma <lma@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Lin Ma 2020-11-10 17:50:59 +08:00 committed by Michal Privoznik
parent f2fbf2dc95
commit 8a4343a436

View File

@ -39,6 +39,7 @@ _vsh_complete()
fi fi
INPUT=( "${COMP_WORDS[@]:$i:$COMP_CWORD}" ) INPUT=( "${COMP_WORDS[@]:$i:$COMP_CWORD}" )
INPUT[-1]=${INPUT[-1]//\\:/:}
# Uncomment these lines for easy debug. # Uncomment these lines for easy debug.
# echo; # echo;