Eu só posso dar uma resposta geral:
Opções de linha de comando são freqüentemente analisadas usando a função de biblioteca getopt
. Originalmente, ele aceitou apenas argumentos que consistiam em um - seguido por um símbolo. Isso limita efetivamente a quantidade de opções que você tem, mais ou menos -A a -Z, -a a -z e -0 a -9. Você pode imaginar que não usará uma opção sem pelo menos uma dica para o uso real, como -h para ajuda ou -v para informações de versão ou saída detalhada.
No Linux, e na biblioteca C padrão frequentemente associada glibc, existe a extensão para getopt para também manipular as opções - like. Vindo com isto é que muitos comandos desenvolvidos sob o GNU (como o glibc) usaram esta extensão. Agora, para muitos comandos, você também tem a opção de estilo GNU. -v e --verbose, -h e --help e assim por diante. Eu acho que o mesmo aconteceu no BSD (embora eu não seja nenhum cara do BSD, por favor corrija-me).
Seu comando ps
vem de uma coleção de software chamada procps e eu acho que eles querem imitar o estilo de opção específico para uma determinada plataforma. Então, para os caras do UNIX, tem - opções. Para o BSD, ele também aceita algo como ps aux
e assim por diante.
ps
não é o único programa que se comporta assim. Muitos dos programas padrão entendem o estilo UNIX "antigo" (POSIX) e algumas extensões modernas.