É uma questão de convenção. Os programas padrão POSIX geralmente têm apenas opções de caracteres únicos e todos são prefixados com um único hífen. As versões mais longas são uma melhoria do GNU para maior clareza, pelo que sei, e geralmente são prefixadas com hífens duplos. Você pode ver isso nas bibliotecas e programas usados para analisar as opções - getopte gnu-getoptrespectivamente. Programas que não sejam compatíveis com GNU e não POSIX podem fazer outra coisa. Observe que você realmente não pode ter certeza de que a forma longa de um argumento pode ser a mesma de programa para programa. -fgeralmente significa --force, mas não com apt-get install(equívoco comum). -vpode significar versão - geralmente, ou --verboseassim por diante. Verifique as páginas de manual ou outra documentação para ter certeza. Também dê uma olhada noArtigo da Wikipedia sobre getopt . Tudo isso antecede o Linux em uma década ou mais.
ddé um exemplo de um utilitário padrão POSIX que não tem quaisquer opções hífen em tudo . findé o exemplo clássico de um utilitário padrão POSIX que possui opções de palavras com hífens únicos - quase todas findas opções têm vários caracteres. pssuporta vários estilos de opção:
This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.
O GNUtar também suporta vários estilos de opção.
Por uma questão de uso, prefira as opções longas nos scripts se tiver certeza de que os scripts serão executados em ambientes compatíveis - a melhoria da clareza é uma bênção ao depurar. Para portabilidade, as opções curtas são preferidas.