Opções UNIX-, BSD-, GNU no comando ps do Linux. De onde eles são? [fechadas]

5

No manual do comando ps no Ubuntu há este texto:

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.

Por que é possível que um comando construído no Ubuntu use opções de diferentes sistemas operacionais? Eu sei que a origem do Linux, UNIX e BSD são os mesmos, mas são ramos diferentes.

    
por YarLinux 08.06.2013 / 12:37

1 resposta

10

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.

    
por 08.06.2013 / 13:34