13 Commits
7.0.8 ... 7.2.4

Author SHA1 Message Date
dffdf72bb9 Bump to 7.2.4 2026-03-24 20:24:05 +01:00
1cde7fc57d Update to vbox 7.1.8 2026-03-24 20:22:58 +01:00
c051a4ed9d Merge pull request #15 from borekon/patch-1
added the ubuntu default bash completion folder
2025-06-09 09:37:26 +02:00
Alfonso
593ec245e5 added the ubuntu default bash completion folder
~/.local/share/bash-completion is the default if if $XDG_DATA_HOME is not set
2025-06-06 09:59:55 +02:00
e681abb354 Bump to version 7.0.22 2025-01-01 16:37:40 +01:00
cd90fc60bd Bump to version 7.0.20 2024-10-07 11:16:01 +02:00
28553da42d Bump to version 7.0.14 2024-04-30 10:12:27 +02:00
3efab392c1 Bump to 7.0.12 2024-02-12 21:17:24 +01:00
b0352554bb Merge pull request #14 from mattalexx/patch-1
Use `grep -E` instead of `egrep` to suppress warnings
2024-02-12 21:15:01 +01:00
Matt Alexander
95088850b6 Use grep -E instead of egrep to suppress warnings
The messages were getting in the way:
```
 $ VBoxManage createvm --name=Win10-3 --ostype Wegrep: warning: egrep is obsolescent; using grep -E
indowsegrep: warning: egrep is obsolescent; using grep -E
egrep: warning: egrep is obsolescent; using grep -E

Windows10        Windows2000      Windows2008      Windows2016_64   Windows31        Windows8         Windows8_64      WindowsMe        WindowsNT4       WindowsVista_64
Windows10_64     Windows2003      Windows2008_64   Windows2019_64   Windows7         Windows81        Windows95        WindowsNT        WindowsNT_64     WindowsXP
Windows11_64     Windows2003_64   Windows2012_64   Windows2022_64   Windows7_64      Windows81_64     Windows98        WindowsNT3x      WindowsVista     WindowsXP_64
matt@q ~ $ VBoxManage createvm --name=Win10-3 --ostype Windowsegrep: warning: egrep is obsolescent; using grep -E

Windows10        Windows2000      Windows2008      Windows2016_64   Windows31        Windows8         Windows8_64      WindowsMe        WindowsNT4       WindowsVista_64
Windows10_64     Windows2003      Windows2008_64   Windows2019_64   Windows7         Windows81        Windows95        WindowsNT        WindowsNT_64     WindowsXP
Windows11_64     Windows2003_64   Windows2012_64   Windows2022_64   Windows7_64      Windows81_64     Windows98        WindowsNT3x      WindowsVista     WindowsXP_64
```
2024-02-12 05:06:39 -06:00
3404afa441 Added support for other names than vboxmanage.
Currently the completion script will be available for commands:
VBoxManage and vboxmanage. With this commit, renaming/linking this
script with another name will also make that name to be included to
completion.

For example, with alias:

    $ alias vb="VBoxManage"

linkig completion script into new name an source it:

    $ cd /path/of/completion/script/
    $ ln -s VBoxManage vb
    # source vb

will start to complete vb command.
2023-11-02 18:14:29 +01:00
ab6d9f7cd9 Added missing completions for cloud related commands.
Also, removed trailing spaces.
2023-11-02 18:11:41 +01:00
3bb795a1e3 Bump to 7.0.10 2023-09-11 10:30:29 +02:00
2 changed files with 333 additions and 184 deletions

View File

@@ -6,7 +6,7 @@ script. However, in some point of time I've decided to rewrite it almost from
scratch.
Current version of script was written and tested against VBoxManage in version
7.0.8, and should contain all commands and their options.
7.2.4, and should contain all commands and their options.
Unlike other attempts, I've tried to make the script context aware. See the
simple session with the VBoxManage command below, to have an idea how it works:
@@ -42,6 +42,7 @@ be:
* ~/bash-completion.d/
* /usr/local/etc/bash-completion.d/
* /etc/bash_completion.d/
* ~/.local/share/bash-completion
* etc.
It's also okay to copy it into some directory, and place proper line in

View File

@@ -1,10 +1,9 @@
# bash command-line completion for VBoxManage command
#
# Author: Roman 'gryf' Dobosz <gryf73@gmail.com>
# URL: https://bitbucket.org/gryf/vboxmanage-bash-completion
# URL: https://github.com/gryf/vboxmanage-bash-completion
# License: 3-clause BSD-style license (see LICENSE file)
# Version: 7.0.8
# Version: 7.2.4
_VBoxManage() {
@@ -164,8 +163,8 @@ _VBoxManage() {
compopt -o filenames
vms=$(VBoxManage list vms -l | \
egrep '^Name|State' | \
egrep -B1 'State:\s+saved' | \
grep -E '^Name|State' | \
grep -E -B1 'State:\s+saved' | \
grep Name |$VBMC_SED 's/Name:\s\+//' | \
tr '\n' '|' | \
$VBMC_SED 's/|$//' | \
@@ -199,7 +198,7 @@ _VBoxManage() {
local item
list=$(VBoxManage list ostypes | \
egrep ^ID: | \
grep -E ^ID: | \
$VBMC_SED 's/ID:\s\+//' | \
tr '\n' '|' | \
$VBMC_SED 's/|$//')
@@ -234,7 +233,7 @@ _VBoxManage() {
local item
list=$(VBoxManage list hostonlyifs | \
egrep ^Name: | \
grep -E ^Name: | \
$VBMC_SED 's/Name:\s\+//' | \
$VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \
@@ -330,6 +329,9 @@ _VBoxManage() {
list=$(VBoxManage list | $VBMC_SED -e '1,2d' \
-e 's/VBoxManage list //' \
-e 's/[\[\]\|]/ /g' \
-e 's/ arm/ /g' \
-e 's/ x86 / /g' \
-e 's/platform-arch=/platform-arch/g' \
-e 's/|/ /g'|xargs echo)
COMPREPLY=( $(compgen -W "$list" -- ${cur}) )
}
@@ -377,7 +379,7 @@ _VBoxManage() {
local item
list=$(VBoxManage list bridgedifs | \
egrep ^Name: | \
grep -E ^Name: | \
$VBMC_SED 's/Name:\s\+//' | \
$VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \
@@ -395,7 +397,7 @@ _VBoxManage() {
local item
list=$(VBoxManage list intnets| \
egrep ^Name: | \
grep -E ^Name: | \
$VBMC_SED 's/Name:\s\+//' | \
$VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \
@@ -472,6 +474,24 @@ _VBoxManage() {
done
}
_iface_comp() {
local ifaces
local item
ifaces=$(VBoxManage objtracker ifaces | \
grep -v "Supported interfaces:" | \
$VBMC_SED 's/^\s\+//g' | \
$VBMC_SED 's/\s\+$//g' | \
tr '\n' '|' | \
$VBMC_SED 's/|$//')
IFS='|' read -ra ifaces <<< "$ifaces"
for item in "${ifaces[@]}"
do
[[ ${item^^} == ${cur^^}* ]] && COMPREPLY+=("$item")
done
}
COMP_WORDBREAKS=${COMP_WORDBREAKS//|/} # remove pipe from comp word breaks
COMPREPLY=()
@@ -677,11 +697,12 @@ _VBoxManage() {
_cloudprofiles_comp
;;
list)
COMPREPLY=( $(compgen -W "instances images" -- ${cur}) )
COMPREPLY=( $(compgen -W "instances images vnicattachments"
-- ${cur}) )
;;
instance)
COMPREPLY=( $(compgen -W "create info terminate start
pause" -- ${cur}) )
COMPREPLY=( $(compgen -W "clone create info metricdata
metriclist terminate start pause reset" -- ${cur}) )
;;
image)
COMPREPLY=( $(compgen -W "create info delete import
@@ -692,6 +713,13 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "setup create" -- ${cur}) )
fi
;;
reset)
COMPREPLY=( $(compgen -W "--id" -- ${cur}) )
;;
vnicattachments)
COMPREPLY=( $(compgen -W "--compartment-id --filter"
-- ${cur}) )
;;
esac
if [[ " ${COMP_WORDS[*]} " == *" list images"* ||
" ${COMP_WORDS[*]} " == *" list instances"* ]]; then
@@ -700,6 +728,18 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
if [[ " ${COMP_WORDS[*]} " == *" instance clone"* ]]; then
items=(--id --clone-name)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
if [[ " ${COMP_WORDS[*]} " == *" instance metricdata"* ]]; then
items=(--id --metric-name --metric-points)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
if [[ " ${COMP_WORDS[*]} " == *" instance create"* ]]; then
items=( --domain-name --display-name --shape --subnet
--publicip --boot-disk-size --privateip --public-ssh-key
@@ -722,6 +762,7 @@ _VBoxManage() {
esac
fi
if [[ " ${COMP_WORDS[*]} " == *" instance info"* ||
" ${COMP_WORDS[*]} " == *" instance metriclist"* ||
" ${COMP_WORDS[*]} " == *" instance terminate"* ||
" ${COMP_WORDS[*]} " == *" instance start"* ||
" ${COMP_WORDS[*]} " == *" instance pause"* ]]; then
@@ -814,7 +855,7 @@ _VBoxManage() {
_vms_comp runningvms
else
local items=( acpipowerbutton acpisleepbutton addencpassword
audioin audioout autostart-delayseconds autostart-enabled1
audioin audioout autostart-delay autostart-enabled1
autostart-enabled2 autostart-enabled3 autostart-enabled4
changeuartmode1 changeuartmode2 clipboard cpuexecutioncap
draganddrop guestmemoryballoon keyboardputfile
@@ -880,8 +921,8 @@ _VBoxManage() {
recording)
[[ ${prev} == "recording" ]] && \
COMPREPLY=( $(compgen -W "filename maxfilesize
maxtime off on screens videofps videorate
videores" -- ${cur}) )
maxtime off on opts screens start stop
videofps videorate videores" -- ${cur}) )
case "${prev}" in
screens)
COMPREPLY=( $(compgen -W "all none
@@ -1038,8 +1079,9 @@ _VBoxManage() {
;;
createvm)
items=( --basefolder --cipher --default --group --name --ostype
--password-id --password --register --uuid )
items=( --basefolder --cipher --default --groups --name --ostype
--password-id --password --platform-architecture --register
--uuid )
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
else
@@ -1047,7 +1089,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
--group)
--groups)
COMPREPLY=()
_group_comp
;;
@@ -1061,6 +1103,9 @@ _VBoxManage() {
--password)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--platform-architecture)
COMPREPLY=( $(compgen -W "x86 arm" -- ${cur}) )
;;
esac
fi
;;
@@ -1414,8 +1459,8 @@ _VBoxManage() {
;;
guestcontrol)
local items=( run start copyfrom copyto mkdir rmdir rm mv mktemp
stat list closeprocess closesession updatega watch )
local items=( run start copyfrom copyto fsinfo mkdir mount rmdir rm
mv mktemp stat list closeprocess closesession updatega watch )
if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms
@@ -1425,7 +1470,7 @@ _VBoxManage() {
if [[ " ${items[*]} " == *" $subcommand "* ]]; then
case "${subcommand}" in
run)
items=( --domain --dos2unix --exe
items=( --arg0 --cwd --domain --dos2unix --exe
--ignore-operhaned-processes --profile --putenv
--quiet --timeout --unix2dos --unquoted-args
--username --verbose -- )
@@ -1445,9 +1490,10 @@ _VBoxManage() {
;;
start)
items=( --domain --exe --ignore-orphaned-processes
--profile --putenv --quiet --timeout
--unquoted-args --username --verbose -- )
items=( --arg0 --cwd --domain --exe
--ignore-orphaned-processes --profile --putenv
--quiet --timeout --unquoted-args --username
--verbose -- )
[[ " ${COMP_WORDS[*]} " != *" --password "* ||
" ${COMP_WORDS[*]} " != *" --passwordfile "* ]] &&
@@ -1470,6 +1516,19 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
fsinfo)
items=( --domain --human-readable --total
--username )
[[ " ${COMP_WORDS[*]} " != *" --password "* ||
" ${COMP_WORDS[*]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[*]} " != *" --quiet"* ||
" ${COMP_WORDS[*]} " != *" --verbose"* ]] &&
items+=( --quiet --verbose )
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
mkdir)
items=( --domain --mode --parents --quiet
--username --verbose )
@@ -1481,6 +1540,16 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
mount)
items=( --username --verbose )
[[ " ${COMP_WORDS[*]} " != *" --password "* ||
" ${COMP_WORDS[*]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
rmdir)
items=( --domain --quiet --recursive --username
--verbose )
@@ -1601,6 +1670,9 @@ _VBoxManage() {
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--cwd)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
@@ -1747,8 +1819,11 @@ _VBoxManage() {
--long|-l)
COMPREPLY=( $(compgen -W "-s --sorted" -- ${cur}) )
;;
--platform-arch)
COMPREPLY=( $(compgen -W "x86 arm" -- ${cur}) )
;;
*)
COMPREPLY=( $(compgen -W "-l --long -s --sorted" -- ${cur}) )
COMPREPLY=( $(compgen -W "-l --long -s --sorted --platform-arch" -- ${cur}) )
;;
esac
fi
@@ -1899,7 +1974,7 @@ _VBoxManage() {
modifynvram)
items=( changevar deletevar enrollmssignatures enrollorclpk
enrollpk enrollmok inituefivarstore listvars queryvar )
enrollpk enrollmok inituefivarstore listvars queryvar secureboot)
# _get_excluded_items "${items[@]}"
# COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -1947,63 +2022,74 @@ _VBoxManage() {
listvars)
COMPREPLY=( )
;;
secureboot)
COMPREPLY=( $(compgen -W "--enable --disable" \
-- ${cur}) )
;;
esac
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi
case "${prev}" in
--enable)
COMPREPLY=( )
;;
--disable)
COMPREPLY=( )
;;
esac
fi
;;
modifyvm)
items=( --accelerate-2d-video --accelerate-3d --acpi --apic --audio
items=(--accelerate-3d --acpi --apic --arm-gic-its --audio
--audio-codec --audio-controller --audio-in --audio-out
--autostart-delay --autostart-enabled --bios-apic
--bios-bootm-enu --bios-logo-display-time --bios-logo-fade-in
--bios-logo-fade-out --bios-logo-image-path --bios-pxe-debug
--bios-system-time-offset --boot1 --boot2 --boot3 --boot4
--bridge-adapter1 --bridge-adapter2 --bridge-adapter3
--autostart-delay --autostart-enabled --boot1 --boot2 --boot3
--boot4 --bridge-adapter1 --bridge-adapter2 --bridge-adapter3
--bridge-adapter4 --bridge-adapter5 --bridge-adapter6
--bridge-adapter7 --bridge-adapter8 --cable-connected1
--cable-connected2 --cable-connected3 --cable-connected4
--cable-connected5 --cable-connected6 --cable-connected7
--cloud-network1 --cloud-network2 --cloud-network3
--cloud-network4 --cable-connected8 --chipset --clipboard-mode
--cpu-profile --cpu-execution-cap --cpu-hotplug
--cpuid-portability-level --cpuid-remove --cpuid-set
--cpuid-remove-all --cpus --default-frontend --description
--drag-and-drop --firmware --graphicscontroller --groups
--guest-debug-address --guest-debug-io-provider
--guest-debug-port --guest-debug-provider --guest-memory-balloon
--hardware-uuid --host-only-adapter1 --host-only-adapter2
--host-only-adapter3 --host-only-adapter4 --host-only-adapter5
--host-only-adapter6 --host-only-adapter7 --host-only-adapter8
--host-only-net1 --host-only-net2 --host-only-net3
--host-only-net4 --host-only-net5 --host-only-net6
--host-only-net7 --host-only-net8 --hpet --hwvirtex
--ibpb-on-vm-entry --ibpb-on-vm-exit --icon-file --intnet1
--intnet2 --intnet3 --intnet4 --intnet5 --intnet6 --intnet7
--intnet8 --ioapic --iommu --keyboard --l1d-flush-on-sched
--l1d-flush-on-vm-entry --large-pages --long-mode --lpt1
--lpt-mode1 --mac-address1 --mac-address2 --mac-address3
--cable-connected8 --chipset --clipboard-file-transfers
--clipboard-mode --cloud-network1 --cloud-network2
--cloud-network3 --cloud-network4 --cpu-execution-cap
--cpu-hotplug --cpu-profile --cpuid-portability-level
--cpuid-remove --cpuid-remove-all --cpuid-set --cpus
--default-frontend --description --drag-and-drop --firmware
--firmware-apic --firmware-boot-menu
--firmware-logo-display-time --firmware-logo-fade-in
--firmware-logo-fade-out --firmware-logo-image-path
--firmware-pxe-debug --firmware-system-time-offset
--graphicscontroller --groups --guest-debug-address
--guest-debug-io-provider --guest-debug-port
--guest-debug-provider --guest-memory-balloon --hardware-uuid
--host-only-adapter1 --host-only-adapter2 --host-only-adapter3
--host-only-adapter4 --host-only-adapter5 --host-only-adapter6
--host-only-adapter7 --host-only-adapter8 --host-only-net1
--host-only-net2 --host-only-net3 --host-only-net4
--host-only-net5 --host-only-net6 --host-only-net7
--host-only-net8 --hwvirtex --ibpb-on-vm-entry --ibpb-on-vm-exit
--icon-file --intnet1 --intnet2 --intnet3 --intnet4 --intnet5
--intnet6 --intnet7 --intnet8 --ioapic --iommu --keyboard
--l1d-flush-on-sched --l1d-flush-on-vm-entry --large-pages
--lpt-mode1 --lpt1 --mac-address1 --mac-address2 --mac-address3
--mac-address4 --mac-address5 --mac-address6 --mac-address7
--mac-address8 --mds-clear-on-sched --mds-clear-on-vm-entry
--memory --monitor-count --mouse --name --nat-alias-mode1
--nat-alias-mode2 --nat-alias-mode3 --nat-alias-mode4
--nat-alias-mode5 --nat-alias-mode6 --nat-alias-mode7
--nat-alias-mode8 --nat-bind-ip1 --nat-bind-ip2 --nat-bind-ip3
--nat-bind-ip4 --nat-bind-ip5 --nat-bind-ip6 --nat-bind-ip7
--nat-bind-ip8 --nat-dns-host-resolver1 --nat-dns-host-resolver2
--nat-dns-host-resolver3 --nat-dns-host-resolver4
--nat-dns-host-resolver5 --nat-dns-host-resolver6
--nat-dns-host-resolver7 --nat-dns-host-resolver8
--memory --monitor-count --mouse --name --nat-bind-ip1
--nat-bind-ip2 --nat-bind-ip3 --nat-bind-ip4 --nat-bind-ip5
--nat-bind-ip6 --nat-bind-ip7 --nat-bind-ip8
--nat-dns-pass-domain1 --nat-dns-pass-domain2
--nat-dns-pass-domain3 --nat-dns-pass-domain4
--nat-dns-pass-domain5 --nat-dns-pass-domain6
--nat-dns-pass-domain7 --nat-dns-pass-domain8 --nat-dns-proxy1
--nat-dns-proxy2 --nat-dns-proxy3 --nat-dns-proxy4
--nat-dns-proxy5 --nat-dns-proxy6 --nat-dns-proxy7
--nat-dns-proxy8 --nat-localhostreachable1
--nat-dns-pass-domain7 --nat-dns-pass-domain8 --nat-enable-tftp1
--nat-enable-tftp2 --nat-enable-tftp3 --nat-enable-tftp4
--nat-enable-tftp5 --nat-enable-tftp6 --nat-enable-tftp7
--nat-enable-tftp8 --nat-forward-broadcast1
--nat-forward-broadcast2 --nat-forward-broadcast3
--nat-forward-broadcast4 --nat-forward-broadcast5
--nat-forward-broadcast6 --nat-forward-broadcast7
--nat-forward-broadcast8 --nat-localhostreachable1
--nat-localhostreachable2 --nat-localhostreachable3
--nat-localhostreachable4 --nat-localhostreachable5
--nat-localhostreachable6 --nat-localhostreachable7
@@ -2014,51 +2100,51 @@ _VBoxManage() {
--nat-pf1 --nat-pf2 --nat-pf3 --nat-pf4 --nat-pf5 --nat-pf6
--nat-pf7 --nat-pf8 --nat-settings1 --nat-settings2
--nat-settings3 --nat-settings4 --nat-settings5 --nat-settings6
--nat-settings7 --nat-settings8 --nat-tftp-file1 --nat-tftp-file2
--nat-tftp-file3 --nat-tftp-file4 --nat-tftp-file5
--nat-tftp-file6 --nat-tftp-file7 --nat-tftp-file8
--nat-tftp-prefix1 --nat-tftp-prefix2 --nat-tftp-prefix3
--nat-tftp-prefix4 --nat-tftp-prefix5 --nat-tftp-prefix6
--nat-tftp-prefix7 --nat-tftp-prefix8 --nat-tftp-server1
--nat-tftp-server2 --nat-tftp-server3 --nat-tftp-server4
--nat-tftp-server5 --nat-tftp-server6 --nat-tftp-server7
--nat-tftp-server8 --nested-hw-virt --nested-paging --nic1 --nic2
--nic3 --nic4 --nic5 --nic6 --nic7 --nic8 --nic-bandwidth-group1
--nic-boot-prio1 --nic-generic-drv1 --nic-generic-drv2
--nic-generic-drv3 --nic-generic-drv4 --nic-generic-drv5
--nic-generic-drv6 --nic-generic-drv7 --nic-generic-drv8
--nic-promisc1 --nic-promisc2 --nic-promisc3 --nic-promisc4
--nic-promisc5 --nic-promisc6 --nic-promisc7 --nic-promisc8
--nic-property1 --nic-property2 --nic-property3 --nic-property4
--nic-property5 --nic-property6 --nic-property7 --nic-property8
--nic-speed1 --nic-speed2 --nic-speed3 --nic-speed4 --nic-speed5
--nic-speed6 --nic-speed7 --nic-speed8 --nic-trace1 --nic-trace2
--nic-trace3 --nic-trace4 --nic-trace5 --nic-trace6 --nic-trace7
--nic-trace8 --nic-trace-file1 --nic-trace-file2
--nat-settings7 --nat-settings8 --nat-tftp-file1
--nat-tftp-file2 --nat-tftp-file3 --nat-tftp-file4
--nat-tftp-file5 --nat-tftp-file6 --nat-tftp-file7
--nat-tftp-file8 --nat-tftp-prefix1 --nat-tftp-prefix2
--nat-tftp-prefix3 --nat-tftp-prefix4 --nat-tftp-prefix5
--nat-tftp-prefix6 --nat-tftp-prefix7 --nat-tftp-prefix8
--nat-tftp-server1 --nat-tftp-server2 --nat-tftp-server3
--nat-tftp-server4 --nat-tftp-server5 --nat-tftp-server6
--nat-tftp-server7 --nat-tftp-server8 --nested-hw-virt
--nested-paging --nic-bandwidth-group1 --nic-boot-prio1
--nic-generic-drv1 --nic-generic-drv2 --nic-generic-drv3
--nic-generic-drv4 --nic-generic-drv5 --nic-generic-drv6
--nic-generic-drv7 --nic-generic-drv8 --nic-promisc1
--nic-promisc2 --nic-promisc3 --nic-promisc4 --nic-promisc5
--nic-promisc6 --nic-promisc7 --nic-promisc8 --nic-property1
--nic-property2 --nic-property3 --nic-property4 --nic-property5
--nic-property6 --nic-property7 --nic-property8 --nic-speed1
--nic-speed2 --nic-speed3 --nic-speed4 --nic-speed5 --nic-speed6
--nic-speed7 --nic-speed8 --nic-trace-file1 --nic-trace-file2
--nic-trace-file3 --nic-trace-file4 --nic-trace-file5
--nic-trace-file6 --nic-trace-file7 --nic-trace-file8 --nic-type1
--nic-type2 --nic-type3 --nic-type4 --nic-type5 --nic-type6
--nic-type7 --nic-type8 --os-type --pae --page-fusion
--paravirt-debug --paravirt-provider --pci-attach --pci-detach
--plug-cpu --recording --recording-file --recording-max-size
--nic-trace-file6 --nic-trace-file7 --nic-trace-file8
--nic-trace1 --nic-trace2 --nic-trace3 --nic-trace4 --nic-trace5
--nic-trace6 --nic-trace7 --nic-trace8 --nic-type1 --nic-type2
--nic-type3 --nic-type4 --nic-type5 --nic-type6 --nic-type7
--nic-type8 --nic1 --nic2 --nic3 --nic4 --nic5 --nic6 --nic7
--nic8 --os-type --page-fusion --paravirt-debug
--paravirt-provider --pci-attach --pci-detach --plug-cpu
--recording --recording-file --recording-max-size
--recording-max-time --recording-opts --recording-screens
--recording-video-fps --recording-video-rate
--recording-video-res --rtc-use-utc --snapshot-folder --spec-ctrl
--system-uuid-le --teleporter --teleporter-address
--recording-video-res --rtc-use-utc --snapshot-folder
--spec-ctrl --system-uuid-le --teleporter --teleporter-address
--teleporter-password --teleporter-password-file
--teleporter-port --testing-cfg-dwordidx --testing-enabled
--testing-mmio --tpm-location --tpm-type
--tracing-allow-vm-access --tracing-config --tracing-enabled
--triple-fault-reset --uart1 --uart2 --uart-mode1 --uart-mode2
--uart-type1 --uart-type2 --unplug-cpu --usb-card-reader
--triple-fault-reset --uart-mode1 --uart-mode2 --uart-type1
--uart-type2 --uart1 --uart2 --unplug-cpu --usb-card-reader
--usb-ehci --usb-ohci --usb-rename --usb-xhci
--virt-vmsave-vmload --vm-process-priority --vram --vrde
--vrde-address --vrde-auth-library --vrde-auth-type
--vrde-extpack --vrde-multi-con --vrde-port --vrde-property
--vrde-reuse-con --vrde-video-channel
--vrde-video-channel-quality --vtx-ux --vtx-vpid --x2apic )
--virt-vmsave-vmload --vm-execution-engine --vm-process-priority
--vram --vrde --vrde-address --vrde-auth-library
--vrde-auth-type --vrde-extpack --vrde-multi-con --vrde-port
--vrde-property --vrde-reuse-con --vrde-video-channel
--vrde-video-channel-quality --x86-hpet --x86-long-mode
--x86-pae --x86-vtx-ux --x86-vtx-vpid --x86-x2apic)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
@@ -2076,30 +2162,36 @@ _VBoxManage() {
_os_comp
;;
--accelerate-2d-video|--accelerate-3d|--acpi|--apic|\
--audio-in|--audio-out|--autostart-enabled|\
--bios-logo-fade-in|--bios-logo-fade-out|--bios-pxe-debug|\
--cable-connected1|--cable-connected2|--cable-connected3|\
--cable-connected4|--cable-connected5|--cable-connected6|\
--cable-connected7|--cable-connected8|--cpu-hotplug|--hpet|\
--hwvirtex|--ibpb-on-vm-entry|--ibpb-on-vm-exit|--ioapic|\
--accelerate-3d|--acpi|--apic|--arm-gic-its|--audio-in|\
--audio-out|--autostart-enabled|--cable-connected1|\
--cable-connected2|--cable-connected3|--cable-connected4|\
--cable-connected5|--cable-connected6|--cable-connected7|\
--cable-connected8|--cpu-hotplug|--firmware-logo-fade-in|\
--firmware-logo-fade-out|--firmware-pxe-debug|--hwvirtex|\
--ibpb-on-vm-entry|--ibpb-on-vm-exit|--ioapic|\
--l1d-flush-on-sched|--l1d-flush-on-vm-entry|--large-pages|\
--long-mode|--mds-clear-on-sched|--mds-clear-on-vm-entry|\
--nat-dns-host-resolver[1-8]|--nat-dns-pass-domain[1-8]|\
--nat-dns-proxy[1-8]|--nat-localhostreachable[1-8]|\
--nested-hw-virt|--nested-paging|--nic-trace[1-8]|--pae|\
--mds-clear-on-sched|--mds-clear-on-vm-entry|\
--nat-dns-pass-domain[1-8]|--nat-enable-tftp[1-8]|\
--nat-forward-broadcast[1-8]|--nat-localhostreachable[1-8]|\
--nested-hw-virt|--nested-paging|--nic-trace[1-8]|\
--page-fusion|--recording|--rtc-use-utc|--spec-ctrl|\
--system-uuid-le|--teleporter|--testing-enabled|\
--testing-mmio|--tracing-allow-vm-access|--tracing-enabled|\
--triple-fault-reset|--usb-card-reader|--usb-ehci|\
--usb-ohci|--usb-xhci|--virt-vmsave-vmload|--vrde-multi-con|\
--vrde-reuse-con|--vrde-video-channel|--vrde|--vtx-ux|\
--vtx-vpid|--x2apic)
--usb-ohci|--usb-xhci|--virt-vmsave-vmload|--vrde|\
--vrde-multi-con|--vrde-reuse-con|--vrde-video-channel|\
--x86-hpet|--x86-long-mode|--x86-pae|--x86-vtx-ux|\
--x86-vtx-vpid|--x86-x2apic)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
--clipboard-file-transfers)
COMPREPLY=( $(compgen -W "disabled enabled" -- ${cur}) )
;;
--graphicscontroller)
COMPREPLY=( $(compgen -W "none vboxvga vmsvga vboxsvga" \
COMPREPLY=( $(compgen -W \
"none vboxvga vmsvga vboxsvga qemuramfb" \
-- ${cur}) )
;;
@@ -2109,10 +2201,10 @@ _VBoxManage() {
;;
--chipset)
COMPREPLY=( $(compgen -W "ich9 piix3" -- ${cur}) )
COMPREPLY=( $(compgen -W "ich9 piix3 armv8virtual" -- ${cur}) )
;;
--bios-boot-menu)
--firmware-boot-menu)
COMPREPLY=( $(compgen -W "disabled menuonly
messageandmenu" -- ${cur}) )
;;
@@ -2130,7 +2222,7 @@ _VBoxManage() {
--nic-type[1-8])
COMPREPLY=( $(compgen -W "Am79C970A Am79C973 82540EM
82543GC 82545EM virtio" -- ${cur}) )
82543GC 82545EM virtio usbnet" -- ${cur}) )
;;
--nic-promisc[1-8])
@@ -2178,10 +2270,6 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "delete" -- ${cur}) )
;;
--nat-alias-mode[1-8])
COMPREPLY=( $(compgen -W "default" -- ${cur}) )
;;
--macaddress[1-8])
COMPREPLY=( $(compgen -W "auto" -- ${cur}) )
;;
@@ -2255,13 +2343,13 @@ _VBoxManage() {
-- ${cur}) )
;;
--bios-apic)
--firmware-apic)
COMPREPLY=( $(compgen -W "disabled apic x2apic" \
-- ${cur}) )
;;
--teleporter-password-file|--icon-file|--recording-file|\
--bios-logo-image-path|--nic-trace-file[1-8]|\
--firmware-logo-image-path|--nic-trace-file[1-8]|\
--nat-tftp-file[1-8])
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
@@ -2271,6 +2359,12 @@ _VBoxManage() {
-- ${cur}) )
;;
--vm-execution-engine)
COMPREPLY=( $(compgen -W \
"default hm hwvirt nem native-api interpreter recompiler" \
-- ${cur}) )
;;
--recording-screens)
COMPREPLY=( $(compgen -W "all none" -- ${cur}) )
;;
@@ -2374,6 +2468,27 @@ _VBoxManage() {
fi
;;
objtracker)
items=(ifaces objlist objinfo)
case "${prev}" in
objlist)
items=(--ifacename)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
objinfo)
items=(--ifacename --id)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
--ifacename)
_iface_comp
;;
esac
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
;;
registervm)
if [[ ${prev} == ${cmd} ]]; then
bind 'set mark-directories on'
@@ -2439,10 +2554,14 @@ _VBoxManage() {
;;
sharedfolder)
items=(add remove)
items=(add remove modify)
subcommand=${COMP_WORDS[2]}
case "${prev}" in
add|remove)
_vms_comp vms
COMPREPLY+=( "global" )
;;
modify)
_vms_comp vms
;;
--hostpath)
@@ -2454,6 +2573,17 @@ _VBoxManage() {
_sharedfolder_comp "${name}"
fi
;;
--readonly)
COMPREPLY=( $(compgen -W "true false" -- ${cur}) )
;;
--auto-mount-point)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
--symlink-policy)
COMPREPLY=( $(compgen -W "forbidden subtree relative
any" -- ${cur}) )
;;
esac
if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
case "${subcommand}" in
@@ -2468,6 +2598,12 @@ _VBoxManage() {
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
modify)
items=(--readonly --automount --auto-mount-point
--symlink-policy)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
fi
@@ -2699,7 +2835,8 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "detect install" -- ${cur}) )
else
case "${prev}" in
--iso|--password-file|--additions-iso|--validation-kit-iso|\
--admin-password-file|--iso|--user-password-file|\
--additions-iso|--validation-kit-iso|\
--script-template|--post-install-template)
COMPREPLY+=( $(compgen -f -- ${cur}) )
;;
@@ -2727,20 +2864,27 @@ _VBoxManage() {
--auxiliary-base-path --country --dry-run
--extra-install-kernel-parameters
--full-user-name --hostname --image-index
--install-additions --install-txs --iso --key
--language --locale --no-install-additions
--no-install-txs --package-selection-adjustment
--password --password-file
--post-install-command --post-install-template
--script-template --start-vm --time-zone --user
--validation-kit-iso)
_get_excluded_items "${items[@]}"
--install-additions --install-txs --iso
--key --language --locale
--no-install-additions --no-install-txs
--package-selection-adjustment
--post-install-command
--post-install-template --proxy
--script-template --start-vm --time-zone
--user --validation-kit-iso)
[[ " ${COMP_WORDS[*]} " != *" --admin-password "* &&
" ${COMP_WORDS[*]} " != *" --admin-password-file"* ]] &&
items+=( --admin-password-file --admin-password )
[[ " ${COMP_WORDS[*]} " != *" --user-password "* &&
" ${COMP_WORDS[*]} " != *" --user-password-file"* ]] &&
items+=( --user-password-file --user-password )
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
;;
esac
fi
fi
;;
@@ -2849,10 +2993,14 @@ _VBoxManage() {
fi
fi
;;
esac
}
complete -o default -F _VBoxManage VBoxManage
complete -o default -F _VBoxManage vboxmanage
if [[ "${BASH_SOURCE[0]}" != 'VBoxManage' &&
"${BASH_SOURCE[0]}" != 'vboxmanage' ]]; then
complete -o default -F _VBoxManage $(basename "${BASH_SOURCE[0]}")
fi
# vim: set ft=sh tw=80 sw=4 et :