Não há ordem correta, pois varia de programa para programa. O sistema operacional apenas passa os argumentos da linha de comando para o programa na ordem em que são fornecidos. A maneira como eles são analisados depende do programa ou das bibliotecas de análise usadas.
Na maioria dos casos, a ordem não importa e as bibliotecas de análise comuns, como getopt
ou argparse
do Python, permitem a análise independente de ordem. Mas outros programas podem ser mais exigentes. Observe também que, mesmo com a análise independente da ordem, você ainda tem argumentos dependentes da ordem. O que significa que algumas opções devem ser seguidas por um argumento:
ls --sort time -l
O time
aqui é um argumento para a opção --sort
e, portanto, deve vir depois dele. No entanto, a ordem de --sort time
e -l
não importa. Muitos programas permitem escrever --sort=time
para tornar isso mais explícito, mas nem todos fazem isso.
O projeto GNU tem um padrão de codificação para tratamento de linha de comando e a maioria dos suas ferramentas seguem isso, mas não é algo que você possa confiar.
Nos casos em que a ordem é importante, você geralmente usa ./myprog -d file.txt
e também parece melhor nos scripts de shell. O estilo de escrita ./myprog file.txt -d
é mais para a linha de comando quando você acabou de digitar a coisa e deseja adicionar um -d
, mas não o cursor até o meio da linha.