Ao digitar um comando no terminal, você também já deve ter feito uso da facilidade de teclar o 
TAB para que o Bash completasse o comando, ou argumento para você. Essa função é uma mão na roda.
Bash Completion
O Bash é um dos mais populares Shell do mundo  
GNU/Linux, e por isso, meu exemplo será feito com base em seus conceitos.
Este ambiente é preparado pelo script 
/etc/bash_completion. Este script prepara o 
completion com uma série de comandos pré-configurados.
Uma forma de fazer com que o 
bash_completion configure os comandos criados por você, é criando um script no diretório 
/etc/bash_completion.d/ em um padrão definido.
Exemplo: Digamos que você criou um comando chamado 
ola, que possui as seguintes opções:
-  --help
-  --message
-  --version
O 
completion do seu comando, seria algo assim:
_ola() {
    local cur prev opts
       COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--help --message --version"
    if [[ ${cur} == -* ]] ; then
          COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
          return 0
    fi
  }
  complete -F _ola ola
Entendendo o código da função
Na linha 2, a função define três variáveis:
-  cur → Atual palavra digitada;
-  prev → Palavra anterior digitada;
-  opts → Opções disponíveis para o comando.
Na linha 8, verifica se o usuário digitou ' - ', e mais qualquer outro texto. Caso sim, a função 'compgen' compara o texto informado com as opções(opts):
compgen -W "${opts}" -- ${cur}
Setando o resultado das opções que correspondem com o texto informado na variável "$COMPREPLY":
Linha 9.
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
Entendendo um pouco mais sobre as variáveis especiais do Bash usadas nessa função:
-  COMPREPLY → Um array, de onde o bash lê possíveis sugestões de completions;
-  COMP_WORDS → Um array de palavras digitadas na linha de comando atual;
-  COMP_CWORD → É o índice que aponta para a palavra atual do array COMP_WORDS.
No final, é feita a associação da função "_ola" com o seu script 
ola, através do comando: 
complete -F _ola ola. 
Este comando registra o 
completion do seu comando no ambiente do Bash.
Não encontrei muitas referências completas, mas achei essa bem simples e fácil de entender: