Este recurso está sendo feito pelo que é chamado de Bash Completion. Os arquivos que retornam isso são armazenados em /etc/bash_completion.d
, com cada comando tendo seu próprio arquivo. Então, no caso git
:
/etc/bash_completion.d/git
Se você observar esse arquivo, perceberá que ele sobrecarrega seu ambiente com funções extras. Um em particular é esse cara:
$ __git_commands
Quando você executá-lo, você obterá a lista de subcomandos.
$ __git_commands | head -5
add merge-recursive
add--interactive merge-resolve
am merge-subtree
annotate merge-tree
apply mergetool
Sabendo que estas são simplesmente funções no seu ambiente, você pode fazer isso:
$ __git<tab><tab>
__git_aliased_command __git_complete_remote_or_refspec __git_diff_index_files __git_index_files __git_refs
__git_aliases __git_complete_revlist __git_diff_index_helper __gitk_main __git_refs2
__git_commands __git_complete_revlist_file __gitdir __git_list_all_commands __git_refs_remotes
__gitcomp __git_complete_strategy __git_find_on_cmdline __git_list_merge_strategies __git_remotes
__gitcompadd __gitcomp_nl __git_func_wrap __git_list_porcelain_commands __git_tags
__gitcomp_file __git_compute_all_commands __git_has_doubledash __git_ls_files_helper __git_wrap__gitk_main
__git_complete __git_compute_merge_strategies __git_heads __git_main __git_wrap__git_main
__git_complete_diff_index_file __git_compute_porcelain_commands __git_index_file_list_filter __git_match_ctag
__git_complete_file __git_config_get_set_variables __git_index_file_list_filter_bash __git_pretty_aliases
__git_complete_index_file __git_count_arguments __git_index_file_list_filter_compat __git_reassemble_comp_words_by_ref
Para obter uma lista de todas as funções de Bash Completion que fornecem várias informações sobre git
do comando.