Ao escrever um utilitário de linha de comando, crio uma função usage()
que exibe informações nesse formulário e, quando adiciono ou altero algo no código getopt (ou qualquer outro), atualizo a função de uso para refletir isso. Naturalmente, o problema com esse sistema é que, se você é preguiçoso, pode acabar com uma mensagem de uso imprecisa, mas isso não é um problema tão difícil de evitar ou corrigir.
Quanto às diretrizes, o princípio "uso:" pode seguir as convenções da página do manual, por exemplo:
Usage: mycommand -h | [-x|y|z] [-a] [-b arg] required_param [optional_param]
Onde um tubo | indica ou (assim você pode usar um dos x ou y ou z) e colchetes com bits opcionais. Isso pode ser simplificado, como por ls, para
Usage: mycommand [options] required_param [optional_param]
Depois, veja as opções em ordem alfabética, etc.
"Uso" é acionado se uma opção de falha for analisada, -h
ou --help
for usado, um argumento obrigatório estiver faltando, etc.