_lxc_get_command_list () { $_comp_command1 | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }' } _lxc_get_subcommand_list () { $_comp_command1 ${words[2]} | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }' } _lxc () { local curcontext="$curcontext" state line typeset -A opt_args _arguments \ '1: :->command'\ '*: :->args' case $state in command) compadd $(_lxc_get_command_list) ;; *) compadd $(_lxc_get_subcommand_list) ;; esac } compdef _lxc lxc