Não existe um padrão generalizado. Há alguma consistência, por exemplo, nos programas GNU, mas você precisa verificar a documentação de cada programa.
Citando a Wikipedia , ênfase minha:
Em sistemas tipo Unix, o hífen ASCII – menos é comumente usado para especificar opções. O caractere geralmente é seguido por uma ou mais letras . Um argumento que é um único hífen – menos por si só, sem nenhuma letra, geralmente especifica que um programa deve manipular dados provenientes da entrada padrão ou enviar dados para a saída padrão. Dois caracteres hífen – menos (-) são usados em alguns programas para especificar "opções longas" onde nomes de opções mais descritivos são usados . Esse é um recurso comum do software GNU.
Geralmente, os hífens indicam um argumento predefinido. Eu acho que é usado para diferenciá-los de, por exemplo, nomes de arquivos ou outros rótulos que você pode usar como argumento. Mas nem sempre é esse o caso (veja abaixo).
Você encontrará frequentemente o mesmo argumento disponível tanto na opção curta quanto na longa, como por exemplo em ls .
Alguns programas usam um único hífen para opções de um caractere e dois hífens para opções de vários caracteres, mas não todos (GNU find
vem à mente). Alguns programas têm hífens opcionais ou os ignoram completamente ( tar
ou BSD ps
vem à mente).
Às vezes, opções longas ( --foo
) exigem argumentos, enquanto opções curtas ( -f
) não (ou pelo menos implicam em um argumento padrão específico).
Opções curtas (por exemplo cut -d ' '
) podem ter argumentos, enquanto opções longas (por exemplo ls --all
) não necessariamente as têm.
Para definir um comportamento específico de um programa, às vezes você precisa usar uma opção curta, para outros você precisa usar uma opção longa e para alguns você pode escolher.
Em uma nota relacionada, alguns programas não podem lidar com espaços em branco entre uma opção e seu argumento , enquanto outros não.
Como escrevi no começo, simplesmente não há comportamento ou padrão comum. Geralmente, você pode rastrear um comportamento semelhante à mesma biblioteca usada para análise de argumentos, mas provavelmente não deseja ler as fontes para descobrir isso.
Você realmente não pode inferir a sintaxe de argumento de um programa da outra.
Se você também considera o Windows, fica ainda pior: enquanto a linha de comando do Windows chama tradicionalmente /f
(pelo menos na maioria das vezes, caracteres únicos) para opções, com :
o separador entre as opções e seu valor (veja, por exemplo, aqui ); os utilitários de plataforma cruzada são generalizados (como os mencionados) e trazem a sintaxe de hífen mais comum para argumentos, com todas as inconsistências mencionadas acima.
-i
vs.--input
ou-n
--dry-run
.