|
|
为了让nova 命令可以补全,因为有些时候,命令可能记不住,可以尝试使用此方法设置,当然自己开发的环境可能就自带:8 ?2 o* g/ X) V9 ?( w' k7 l a2 i
切换到/etc/bash_completion.d目录下:0 B4 Y, U% I# ?' u
; _1 ^7 r; W; ~$ b8 U+ {
创建文件vim nova.bash_completion 4 U/ ^9 U5 y/ c* U6 Y
+ J/ B& L9 y `
- A& x5 c& |4 F+ Z+ v$ y) A_nova()6 f( q2 W q) ]( G9 T+ s
{
4 X1 n e% G% o! L local cur prev words+ G) r+ `1 N( E" H
COMPREPLY=()
( B( e( O0 T" ]% [- I- ^$ ? _get_comp_words_by_ref -n : cur prev words3 @9 x7 _8 }4 E2 v
# Command data:
( ]. G2 I J: i, |% C [3 i2 r cmds='add-secgroup agent-create agent-delete agent-list agent-modify aggregate-add-host aggregate-cache-images aggregate-create aggregate-delete aggregate-list aggregate-remove-host aggregate-set-metadata aggregate-show aggregate-update availability-zone-list backup boot clear-password console-log delete diagnostics evacuate flavor-access-add flavor-access-list flavor-access-remove flavor-create flavor-delete flavor-key flavor-list flavor-show flavor-update force-delete get-mks-console get-password get-rdp-console get-serial-console get-spice-console get-vnc-console host-evacuate host-evacuate-live host-meta host-servers-migrate hypervisor-list hypervisor-servers hypervisor-show hypervisor-stats hypervisor-uptime image-create instance-action instance-action-list instance-usage-audit-log interface-attach interface-detach interface-list keypair-add keypair-delete keypair-list keypair-show limits list list-secgroup live-migration live-migration-abort live-migration-force-complete lock meta migrate migration-list pause quota-class-show quota-class-update quota-defaults quota-delete quota-show quota-update reboot rebuild refresh-network remove-secgroup rescue reset-network reset-state resize resize-confirm resize-revert restore resume server-group-create server-group-delete server-group-get server-group-list server-migration-list server-migration-show server-tag-add server-tag-delete server-tag-delete-all server-tag-list server-tag-set server-topology service-delete service-disable service-enable service-force-down service-list set-password shelve shelve-offload show ssh start stop suspend trigger-crash-dump unlock unpause unrescue unshelve update usage usage-list version-list volume-attach volume-attachments volume-detach volume-update bash-completion help --version --debug --os-cache --timings --os-region-name --service-type --service-name --os-endpoint-type --os-compute-api-version --os-endpoint-override --os-auth-type --insecure --os-cacert --os-cert --os-key --timeout --collect-timing --os-auth-url --os-system-scope --os-domain-id --os-domain-name --os-project-id --os-project-name --os-project-domain-id --os-project-domain-name --os-trust-id --os-default-domain-id --os-default-domain-name --os-user-id --os-username --os-user-domain-id --os-user-domain-name --os-password'3 B1 Q- G& ?+ A- a
cmds_flavor='create delete list set show unset'
: J0 V* E2 ~3 p; A cmds_flavor_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --id --ram --disk --ephemeral --swap --vcpus --rxtx-factor --public --private --property --project --description --project-domain'
) R+ v3 n% x o- ` cmds_flavor_delete='-h --help'
7 A7 I+ t# b" \) J1 o! I2 y cmds_flavor_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --public --private --all --long --marker --limit'; h- s$ G3 d; R5 G5 k' |7 f
cmds_flavor_set='-h --help --no-property --property --project --description --project-domain'
5 l* ~- W& l% C6 H" k cmds_flavor_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
- F, f! s: m: f( n cmds_flavor_unset='-h --help --property --project --project-domain'0 {% g$ h& `% v; n) V/ @ m' h
cmds_floating='ip'
) h5 h; u+ I6 g" `) b! n' A cmds_floating_ip='create delete list pool port set show unset'
: B2 z% U: I$ l2 R0 [9 {2 \8 M( l cmds_floating_ip_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --subnet --port --floating-ip-address --fixed-ip-address --qos-policy --description --project --dns-domain --dns-name --project-domain --tag --no-tag'" `# C; K0 C7 H6 i% X) r, |
cmds_floating_ip_delete='-h --help'
- Q: z% A& K2 i, } cmds_floating_ip_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --network --port --fixed-ip-address --floating-ip-address --long --status --project --project-domain --router --tags --any-tags --not-tags --not-any-tags'
3 U4 j; Y: C: ~4 G* [6 E. g cmds_floating_ip_pool='list'
7 b! }' j) h S/ i3 Z3 M4 Q cmds_floating_ip_pool_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column'% B! r1 B2 ?$ ]
cmds_floating_ip_port='forwarding': s7 U5 I" X3 s( R
cmds_floating_ip_port_forwarding='create delete list set show'8 M1 _9 T2 K8 G2 V
cmds_floating_ip_port_forwarding_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --internal-ip-address --port --internal-protocol-port --external-protocol-port --protocol'$ a4 V6 W& R2 q6 T8 E( c
cmds_floating_ip_port_forwarding_delete='-h --help'
0 y6 x1 E$ T2 o% T/ p cmds_floating_ip_port_forwarding_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --port --external-protocol-port --protocol'
9 P, s: A& p; h' H8 _: P6 z cmds_floating_ip_port_forwarding_set='-h --help --port --internal-ip-address --internal-protocol-port --external-protocol-port --protocol'
& J2 U7 o% j5 _8 v cmds_floating_ip_port_forwarding_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
G" W$ O* g& c5 e- Y% l2 M cmds_floating_ip_set='-h --help --port --fixed-ip-address --description --qos-policy --no-qos-policy --tag --no-tag'! C, {5 d1 s- }* i; b% |' A
cmds_floating_ip_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix': }9 X" r ^( D
cmds_floating_ip_unset='-h --help --port --qos-policy --tag --all-tag'
. H8 O. T* z1 g cmds_hypervisor='list show stats'
+ g- P7 ] t6 a. c cmds_hypervisor_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --matching --long'
+ z% D! m0 ]" G- v1 ^9 d& v cmds_hypervisor_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
$ [$ `* ]! ~4 X) J" H6 P$ v6 ? C' G cmds_hypervisor_stats='show'$ l. J! U$ |; }& z# {4 d
cmds_hypervisor_stats_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'4 Z. y1 S; j7 v& w' l; i
cmds_image='add create delete list member remove save set show unset'
$ @2 d3 i. q( `, j" X! Y, q cmds_image_add='project'
" B5 H" R C0 ]5 I8 S* A8 g cmds_image_add_project='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --project-domain'
) q1 I8 c/ I6 g' m2 \3 g' |+ A3 y cmds_image_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --id --container-format --disk-format --min-disk --min-ram --file --volume --force --sign-key-path --sign-cert-id --protected --unprotected --public --private --community --shared --property --tag --project --project-domain --size --location --copy-from --checksum --store'
Q7 I, d5 ~1 V- t; ]! W: Y cmds_image_delete='-h --help'
5 D3 I$ {; o: D7 d cmds_image_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --public --private --community --shared --property --name --status --member-status --tag --long --page-size --sort --limit --marker'0 S- i( m- n6 P" W) ~ q6 w
cmds_image_member='list'
4 v; t- `) I) H9 N. _% T cmds_image_member_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --project-domain'
2 ~. u3 ~: a6 U8 t5 l, A cmds_image_remove='project'; i* F8 ?; |) d9 }0 F$ Y( ]0 k
cmds_image_remove_project='-h --help --project-domain'- }1 q L& v& a6 H% m( y* A
cmds_image_save='-h --help --file'6 G' b1 V7 s6 A$ {- p1 R+ J
cmds_image_set='-h --help --name --min-disk --min-ram --container-format --disk-format --protected --unprotected --public --private --community --shared --property --tag --architecture --instance-id --instance-uuid --kernel-id --os-distro --os-version --ramdisk-id --deactivate --activate --project --project-domain --visibility --accept --reject --pending'+ k9 u" \ I u" h- o# u
cmds_image_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --human-readable'$ I- g E% D7 A9 Q
cmds_image_unset='-h --help --tag --property'2 W8 \- C" r5 s& N: J
cmds_server_delete='-h --help --wait'
; y' N4 @+ r& ~0 N( f cmds_server_dump='create'
4 p& K+ T _( o' n) X cmds_server_dump_create='-h --help'& k2 N: \+ F' e0 N3 C# A
cmds_server_event='list show'# C) i# N) q1 t/ B& W* J
cmds_server_event_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'& r% f, ~) n3 k
cmds_server_event_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
. ^8 f; c1 i+ l4 {1 b5 [- g# z9 W+ O cmds_server_group='create delete list show'# s( t* Z0 L8 ]0 E$ p" b" ?/ f2 }
cmds_server_group_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --policy'
$ u) P! |9 ?/ \ cmds_server_group_delete='-h --help'
; F! ?4 N# ~7 O4 \ cmds_server_group_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --all-projects --long'
$ d5 A% `7 q/ U" u' q. m cmds_server_group_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'" |" F4 X3 B" X' D; w3 ?6 d
cmds_server_image='create'
' K( Y, N" K2 }* }: f, Z cmds_server_image_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --name --wait'6 ]2 r |2 c; X9 J$ v X5 w
cmds_server_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --reservation-id --ip --ip6 --name --instance-name --status --flavor --image --host --all-projects --project --project-domain --user --user-domain --long -n --no-name-lookup --name-lookup-one-by-one --marker --limit --deleted --changes-before --changes-since --locked --unlocked'
2 Q6 l# m7 o5 I cmds_server_lock='-h --help --reason'
* j% c5 d! H( y! F W2 x cmds_server_migrate='-h --help --live-migration --live --host --shared-migration --block-migration --disk-overcommit --no-disk-overcommit --wait'
9 N7 y9 K7 `( N, U8 L. q: \8 C cmds_server_pause='-h --help'* r0 L# _7 w/ s7 M ?
cmds_server_reboot='-h --help --hard --soft --wait'3 k6 s7 @( _3 Q# V
cmds_server_rebuild='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --image --password --property --description --wait --key-name --key-unset'
/ e+ ~/ v) m) u! G* h- Y( I cmds_server_remove='fixed floating network port security volume'
L5 Y, Q4 e# o( g1 |! r2 ^ cmds_server_remove_fixed='ip'
1 I$ k* b$ l7 { cmds_server_remove_fixed_ip='-h --help'
- Z# z$ S: g+ K' R- n% ] cmds_server_remove_floating='ip'
* h1 V8 k3 H# t8 T/ { cmds_server_remove_floating_ip='-h --help'
% X# k5 D! W' P cmds_server_remove_network='-h --help'1 n1 k- R4 j6 }& a# ]2 _
cmds_server_remove_port='-h --help'- T1 s% g. ~- l; W8 \
cmds_server_remove_security='group'
: E! U& D" i6 [; O% ~* W" t4 | cmds_server_remove_security_group='-h --help'
" N6 p" e2 z6 |# x w, C cmds_server_remove_volume='-h --help', z; d" }. w" b# H8 q% }0 k) f5 o
cmds_server_rescue='-h --help --image --password'
7 l6 |& r' H9 M" H$ q; J! l cmds_server_resize='-h --help --flavor --confirm --revert --wait revert confirm'
& f: P1 {) V9 t6 v cmds_server_resize_confirm='-h --help'% E& V2 b- w- c) C$ M/ m6 f# j
cmds_server_resize_revert='-h --help'
4 {3 T+ `8 e1 U/ Y0 e. X: L: O6 x cmds_server_restore='-h --help'4 d) [9 t2 l& c. P0 U/ b+ D3 I3 B" A+ x
cmds_server_resume='-h --help'
/ K4 w( E% q: J cmds_server_set='-h --help --name --root-password --property --state --description'( G! ?0 j, I, V2 A' `
cmds_server_shelve='-h --help'
* i) X. }& t9 U- Q8 [. n) Z0 y cmds_server_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --diagnostics') j/ W% C3 `; { k$ Z
cmds_server_ssh='-h --help --login -l --port -p --identity -i --option -o -4 -6 --public --private --address-type -v'1 I+ I9 Q4 X" g% p8 [5 u9 u
cmds_server_start='-h --help'
) w8 ]. G) G1 x7 t& i( R, G cmds_server_stop='-h --help'4 W0 A" m4 s, \. k' ]0 g9 u
cmds_server_suspend='-h --help'
+ X! X. _3 o; I cmds_server_unlock='-h --help'4 H1 W$ q& t4 h) U) A8 M
cmds_server_unpause='-h --help'
3 N4 ]0 M! E5 \3 G8 o. B U1 y- q cmds_server_unrescue='-h --help'
8 c4 T1 G( \ _0 {& u% S0 \: D) S' Y" U cmds_server_unset='-h --help --property --description'
! i0 P7 E% J5 T6 e cmds_server_unshelve='-h --help --availability-zone'
, h Z' b3 J1 X" R* ^% J cmds_service='create delete list provider set show'
$ ]* E8 Z* L6 R- Z& u, T- q cmds_service_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --name --description --enable --disable'! S2 j8 @! b: {2 U& U
cmds_service_delete='-h --help'6 @- M% N7 z$ w: X2 ^4 b, _
cmds_service_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'# O) w( K6 Y& d% @) b( K
cmds_service_provider='create delete list set show'
' \/ \8 s# X, {' T" e$ {& _3 N cmds_service_provider_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --auth-url --description --service-provider-url --enable --disable' t# {* o) W3 ]; ]4 k9 O0 X$ k
cmds_service_provider_delete='-h --help'
1 ~9 g: B) q, L/ q cmds_service_provider_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column' M% X" O+ c8 F: N- P+ n* \" |
cmds_service_provider_set='-h --help --auth-url --description --service-provider-url --enable --disable'( i6 q) ?; _& ?0 D' U @
cmds_service_provider_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'- R2 a) c! D9 B# j6 W( A+ O- u# F
cmds_service_set='-h --help --type --name --description --enable --disable': L$ F3 \( E `3 G' x
cmds_service_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'1 t) k) U! j9 O7 h; b4 [ h
cmds_sfc='flow port service'8 y# |! [7 I# r' m) s0 j/ M( U
cmds_sfc_flow='classifier'; Z. Z& ^! W- |
cmds_sfc_flow_classifier='create delete list set show'
: G" ~) f, s/ }2 K# w" ?# ?% n$ i cmds_sfc_flow_classifier_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --protocol --ethertype --source-port --destination-port --source-ip-prefix --destination-ip-prefix --logical-source-port --logical-destination-port --l7-parameters'
2 c; r* Z. v1 U; Z0 ?% |+ _+ U cmds_sfc_flow_classifier_delete='-h --help'
1 `* V, C6 I8 g3 B9 ^ cmds_sfc_flow_classifier_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'- Z5 C9 C8 N+ A$ q6 u$ w7 ?! [
cmds_sfc_flow_classifier_set='-h --help --name --description'
O& v* v7 _; ]) \. B6 X, k cmds_sfc_flow_classifier_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'9 b8 ~ y) l2 P) z5 w
cmds_sfc_port='chain pair'
& m# X& M8 |/ K* x, N% _ cmds_sfc_port_chain='create delete list set show unset' `7 A& V4 \$ v2 ^
cmds_sfc_port_chain_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --flow-classifier --chain-parameters --port-pair-group'
( U5 |# r& C- I( o9 D. C2 }! q/ K cmds_sfc_port_chain_delete='-h --help'# h: Q8 D- d# o
cmds_sfc_port_chain_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'
( C; r0 M' j9 a cmds_sfc_port_chain_set='-h --help --name --description --flow-classifier --no-flow-classifier --port-pair-group --no-port-pair-group'
/ q$ Q3 J# p7 }5 i cmds_sfc_port_chain_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'/ X7 c3 W2 Q& S
cmds_sfc_port_chain_unset='-h --help --flow-classifier --all-flow-classifier --port-pair-group'
2 ~& ~2 J! s, h/ K) ]& d cmds_sfc_port_pair='create delete group list set show'
4 q" ^) @7 `/ j- F* ~ cmds_sfc_port_pair_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --service-function-parameters --ingress --egress'
3 t* x4 E, b. r; e- K cmds_sfc_port_pair_delete='-h --help'
3 }% h4 g9 c4 c Q cmds_sfc_port_pair_group='create delete list set show unset'
. u* I% ^; b1 G! o( a2 i cmds_sfc_port_pair_group_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --port-pair --enable-tap --disable-tap --port-pair-group-parameters', q) J' W Z R d# I% j
cmds_sfc_port_pair_group_delete='-h --help'6 A+ L- `; e, Q% F
cmds_sfc_port_pair_group_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'3 {8 Q# V U% P2 o( _2 w5 N, Y
cmds_sfc_port_pair_group_set='-h --help --name --description --port-pair --no-port-pair'- W, v) ~" b& i- O# o
cmds_sfc_port_pair_group_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix', I+ r, h" k- _7 S5 O
cmds_sfc_port_pair_group_unset='-h --help --port-pair --all-port-pair'
$ F, i: \% L- R/ ]* x6 s cmds_sfc_port_pair_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'
`) Y5 Y1 Z f# V" j8 V7 @: o3 O cmds_sfc_port_pair_set='-h --help --name --description'0 j7 q& i* q5 h0 ^9 r X
cmds_sfc_port_pair_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'$ L) N% d: O2 C: [; a# {4 q
cmds_sfc_service='graph'& n! ~- E- y' p- l
cmds_sfc_service_graph='create delete list set show'
: Z# }) g, K" |3 Z$ K" b2 `* _ cmds_sfc_service_graph_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --branching-point'
# U" R1 y: K$ w0 Z cmds_sfc_service_graph_delete='-h --help') b8 p" U4 Q) d3 j6 v# l( V" ~2 @0 g1 s
cmds_sfc_service_graph_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long'; @" Z( `4 F9 [: ~8 |1 F
cmds_sfc_service_graph_set='-h --help --name --description') z# o6 I& y" }( h
cmds_sfc_service_graph_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
: b4 G* X% r1 x, N; ^ cmds_subnet='create delete list pool set show unset'
, }1 f2 U, e1 h7 S! S7 c8 G cmds_subnet_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --project --project-domain --subnet-pool --use-prefix-delegation --use-default-subnet-pool --prefix-length --subnet-range --dhcp --no-dhcp --dns-publish-fixed-ip --no-dns-publish-fixed-ip --gateway --ip-version --ipv6-ra-mode --ipv6-address-mode --network-segment --network --description --allocation-pool --dns-nameserver --host-route --service-type --tag --no-tag') O' @3 P7 J# f4 k- i8 R! H
cmds_subnet_delete='-h --help'
' @. G! s% V: G cmds_subnet_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long --ip-version --dhcp --no-dhcp --service-type --project --project-domain --network --gateway --name --subnet-range --tags --any-tags --not-tags --not-any-tags'$ K. h+ z0 B4 ? X& {
cmds_subnet_pool='create delete list set show unset'# Z% d- L4 |" s
cmds_subnet_pool_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --pool-prefix --default-prefix-length --min-prefix-length --max-prefix-length --project --project-domain --address-scope --default --no-default --share --no-share --description --default-quota --tag --no-tag'
8 {; V, \9 i% A cmds_subnet_pool_delete='-h --help'
7 d( S- x) v+ _- W# o# p" f cmds_subnet_pool_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long --share --no-share --default --no-default --project --project-domain --name --address-scope --tags --any-tags --not-tags --not-any-tags'
0 C0 T" B1 }9 \$ d cmds_subnet_pool_set='-h --help --name --pool-prefix --default-prefix-length --min-prefix-length --max-prefix-length --address-scope --no-address-scope --default --no-default --description --default-quota --tag --no-tag'
: T) l1 b- g) |, x cmds_subnet_pool_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
% B; ~' Q$ y6 m9 Y- T4 M" j$ Y# t cmds_subnet_pool_unset='-h --help --tag --all-tag'
! t/ R% }1 F$ w9 b cmds_subnet_set='-h --help --name --dhcp --no-dhcp --dns-publish-fixed-ip --no-dns-publish-fixed-ip --gateway --network-segment --description --tag --no-tag --allocation-pool --no-allocation-pool --dns-nameserver --no-dns-nameservers --host-route --no-host-route --service-type'
5 ]% x4 `. d5 f4 S9 N cmds_subnet_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
# j& W! m& C9 R' X; l* u! {) b cmds_subnet_unset='-h --help --allocation-pool --dns-nameserver --host-route --service-type --tag --all-tag'3 k% L" o* F4 W3 A$ n- {8 G
cmds_volume='backup create delete host list migrate qos service set show snapshot transfer type unset'
" f- D; r0 [" D$ e* x cmds_volume_backup='create delete list restore set show'
+ |9 ], N% K, s$ o. P1 E9 {: d cmds_volume_backup_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --name --description --container --snapshot --force --incremental'
7 S3 S/ T1 B) X5 e cmds_volume_backup_delete='-h --help --force'
8 v9 c: ]) ?4 W3 V# s" P cmds_volume_backup_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long --name --status --volume --marker --limit --all-projects'
: I5 H1 T. g [! z; ?) P cmds_volume_backup_restore='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
# {4 o# \1 y3 ]) h+ m! q* w3 M cmds_volume_backup_set='-h --help --name --description --state'
& }, F8 r; k+ M. r cmds_volume_backup_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'5 b5 q4 O1 M' t( w) q/ } c+ u
cmds_volume_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --size --type --image --snapshot --source --source-replicated --description --availability-zone --consistency-group --property --hint --bootable --non-bootable --read-only --read-write' m1 f" F1 ?. Q' y+ ^6 N Q
cmds_volume_delete='-h --help --force --purge'
7 a! Y; H9 S9 n cmds_volume_host='set'# N7 L" `1 l( t1 k
cmds_volume_host_set='-h --help --disable --enable'
4 }! X& E, o" K& M0 j, L cmds_volume_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --project --project-domain --user --user-domain --name --status --all-projects --long --marker --limit'
2 a; p: q. h7 ~1 T2 W cmds_volume_migrate='-h --help --host --force-host-copy --lock-volume'6 P7 l7 I5 ?5 z3 z& W( P' o+ W
cmds_volume_qos='associate create delete disassociate list set show unset'
% I7 W; n) [# u: s cmds_volume_qos_associate='-h --help'
# X9 R6 `0 K/ Q0 `, @9 [1 c5 } cmds_volume_qos_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --consumer --property'* j1 Y5 o! ]( ~! Y- A; ~
cmds_volume_qos_delete='-h --help --force'
! s4 F% {7 @& O1 n# [2 t; o& s9 Y cmds_volume_qos_disassociate='-h --help --volume-type --all'
6 K# y: ]5 D) e% _ cmds_volume_qos_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column'7 t' l( O1 M8 l& ~2 ^
cmds_volume_qos_set='-h --help --property'
7 c: f. ~* S) H6 ^6 `8 |9 K) O cmds_volume_qos_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
9 ?! d/ z4 ^& U' u# h8 Q cmds_volume_qos_unset='-h --help --property'
2 q1 i$ e" \7 P6 j B* Q cmds_volume_service='list set'& `" s3 s! s0 I7 d5 ^" l
cmds_volume_service_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --host --service --long'1 n% Y: \. n/ `$ R$ B
cmds_volume_service_set='-h --help --enable --disable --disable-reason'% r5 B7 X0 y2 m4 X- m6 K
cmds_volume_set='-h --help --name --size --description --no-property --property --image-property --state --attached --detached --type --retype-policy --bootable --non-bootable --read-only --read-write' k. @0 `; u/ J
cmds_volume_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'( z& j- x. v) f& i
cmds_volume_snapshot='create delete list set show unset'
; i9 o8 T5 t% B2 ?! I cmds_volume_snapshot_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --volume --description --force --property --remote-source'7 z' \9 A8 A0 p2 O/ z m
cmds_volume_snapshot_delete='-h --help --force'- _) m+ I+ P9 @% M" o: k
cmds_volume_snapshot_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --all-projects --project --project-domain --long --marker --limit --name --status --volume'+ R* `2 l* x+ Y2 F
cmds_volume_snapshot_set='-h --help --name --description --no-property --property --state'
% M) I" [! v+ T3 J( N- O& L- n. _ cmds_volume_snapshot_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
4 ]( F K6 C2 t6 L: x+ j cmds_volume_snapshot_unset='-h --help --property'5 N! a. Z9 ]: {) i
cmds_volume_transfer='request'/ j% |5 h# s: v' ~
cmds_volume_transfer_request='accept create delete list show'
( h/ Q, k4 [. J% O$ q+ ] y% Y cmds_volume_transfer_request_accept='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --auth-key'
2 H( I* y; Q( M' {% Y) u. r cmds_volume_transfer_request_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --name'
9 t- k8 C- `# D3 j* Q/ j/ Y cmds_volume_transfer_request_delete='-h --help'6 Y' ?* y: p( x6 Z( k5 y
cmds_volume_transfer_request_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --all-projects'+ u; ~& q# ]6 c8 j
cmds_volume_transfer_request_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix'
. a/ f- H7 K/ k2 p- ~, _ cmds_volume_type='create delete list set show unset'* i- W/ c# r4 g1 P3 z
cmds_volume_type_create='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --description --public --private --property --project --encryption-provider --encryption-cipher --encryption-key-size --encryption-control-location --project-domain' o# Q" F/ |; U" r3 l
cmds_volume_type_delete='-h --help'4 W, \6 @4 O; a3 C+ F. r/ n: g
cmds_volume_type_list='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --quote --sort-column --long --default --public --private --encryption-type'
# X. @( d+ X2 @3 q cmds_volume_type_set='-h --help --name --description --property --project --project-domain --encryption-provider --encryption-cipher --encryption-key-size --encryption-control-location'
: c- t! d9 \8 b7 T cmds_volume_type_show='-h --help -f --format -c --column --max-width --fit-width --print-empty --noindent --variable --prefix --encryption-type': G8 b' b2 G. B0 {8 p
cmds_volume_type_unset='-h --help --property --project --project-domain --encryption-type'
( Q( k8 T5 p0 u& L4 J& e# x9 s cmds_volume_unset='-h --help --property --image-property'
4 }' h3 A3 ~2 O0 V dash=-0 \! C0 L. ]% T0 b/ h% c0 [+ E% a3 [
underscore=_
& u4 ?: V& x' U: X9 u( O cmd=""
7 K: L4 k( U% D+ [# f words[0]=""% S; F1 G; d9 X: U/ f9 `- t
completed="${cmds}"
& U6 \4 C9 j* o" N* j, y" D for var in "${words[@]:1}"( F: b8 [& ~, e' v; T
do
! `! N/ f" S0 M- t4 | if [[ ${var} == -* ]] ; then) I K: {7 j2 e8 @
break
+ U. p* k: c3 L. F* b fi
0 X7 g1 h. F& t- y' k if [ -z "${cmd}" ] ; then
$ _7 w9 ~# d, S( j9 M7 j% E proposed="${var}"8 }( l* c+ b$ O1 L
else
. I1 S6 n7 }. G proposed="${cmd}_${var}"
5 ^* H) O2 T. o7 q- P fi
. u) p& |) |, A3 x; u local i="cmds_${proposed}"2 S" U& C& i5 F1 d# C" a3 |: H" i
i=${i//$dash/$underscore}
! C' y; w5 K/ F7 }; ?7 ?5 f I local comp="${!i}") {% y7 p& {& c$ c" |
if [ -z "${comp}" ] ; then
$ `' J7 E1 Z3 n) _& @0 B break
" _$ w; g" S* x/ C3 Y2 @1 H fi& m, j% |! @- z7 h1 i7 g. B0 [
if [[ ${comp} == -* ]] ; then2 x' b2 _: P J9 m; J
if [[ ${cur} != -* ]] ; then% Y, s" S: J0 N: S2 s4 [
completed=""" J( G0 @5 E8 `# ]: H6 z
break, ~ @3 G* C- n7 G4 s
fi( h8 H$ Z p5 K9 z) A3 y
fi. q9 n' ^+ d" s: ~
cmd="${proposed}"* W; H. r+ r" o8 T, T4 r, s
completed="${comp}"
& i' R# g1 ]7 L1 L! U0 @# p5 r done. Y- F9 @& J* l1 b7 o! ^- J
if [ -z "${completed}" ] ; then1 I! d o! E/ D" L. [' p1 ~$ u
COMPREPLY=( $( compgen -f -- "$cur" ) $( compgen -d -- "$cur" ) )% }# `) U! q/ @8 N; C- [/ j
else
& y7 `# \2 q3 U+ Z9 N% L4 z COMPREPLY=( $(compgen -W "${completed}" -- ${cur}) )
- ~: R% p+ U$ ] fi7 Y0 N. R% _1 B) d+ \) R
return 0
3 J2 d" D% T: W% o}1 d) h5 d5 A. _9 [* c
complete -F _nova nova
% ]8 D# `; v Z4 x2 N, j: C
I! `$ @. L8 s i0 j- w9 o* @, G/ T( `& l% ]- w
$ N/ V( \* ]8 q/ f8 ^" u, P$ }保存退出后:0 a9 I9 D( a: p: L& M3 |. |
; k0 m, P$ _8 v1 Z
echo "source /etc/bash_completion.d/nova.bash_completion" >>~/.bashrc
+ V& S+ z6 H4 m4 J/ `1 |6 w1 w; l3 G# _3 [$ Y
4 e! j. j( K5 y( ?1 X然后加载bashrc的文件:
5 x+ i+ Z. a) Q7 T/ a. H' Y0 H[root@controller1 ~]# source ~/.bashrc0 l7 O/ p) k3 Q
$ {( @, ~; ]* i6 k2 ~
9 F& h ~+ N+ @# I. r/ }; S
|
|