A questão é que você pode dizer coisas como ls -laR
;
é equivalente a ls -l -a -R
.
Então, -recursive
seria interpretado como -r -e -c -u -r -s -i -v -e
.
Esta pergunta pode ter sido feita antes ...
Por que bandeiras como --recursivas têm dois traços em vez de apenas recursivos? Eu sei que a versão abreviada é apenas -r. Existe um número máximo de caracteres que um sinalizador com um traço pode ter antes de exigir dois traços?
Não há regra exata para usar traço simples ou duplo como uma opção para um programa. Se alguém decidir lidar com as opções por conta própria, pode implementar o que quiser.
Mas se o programador não está procurando por um PITA e quer que o programa use uma maneira comum e bem reconhecível, então usaria a função padrão getopt/getopt_long
que lida com opções longas (string longa como você pediu) como double tracejado (caractere único) prefixado com traço único. A função getopt
faz parte de <unistd.h>
na linguagem C. A mesma função pode ser usada em sistemas baseados em Unix em shells padrão man getopt 1
que utilizam a análise de opções simples e duplas (longas).
Is there a maximum number of characters that a flag with one dash can have before it requires two dashes?
Se alguém usa a função descrita acima, as opções curtas podem ter apenas um único caractere.
Tags command-line flag