Opções de comando com hífen ou não [fechado]

1

Por que alguns comandos (entre usuários do Linux) são executados com hífens e outros não?

Por exemplo, ls -l ou rm -r em contraste com ps ax ou tar xvf ?

Eu vejo que tem razões históricas, mas elas significam o mesmo, por que elas não eram unificadas?

    
por Pierre B 24.09.2017 / 01:34

2 respostas

7

Para isso, você precisa voltar à história do * nix, quando tinha muitos sabores de unices. ps é especialmente cabeludo, porque tem opções totalmente diferentes se você usar o - (estilo POSIX / Unix) ou sem (BSD). Unix Wars é uma página útil da Wikipédia para começar a ler sobre isso.

Editar: História do Unix também pode interessar a você.

    
por 24.09.2017 / 01:57
1

A opção de linha de comando sem traços, como encontrado com, por exemplo, tar , dd e ps são sinalizadores de linha de comando de estilo antigo que não podem ser removidos devido a muitos aplicativos, dependendo deles.

O manual do OpenBSD para tar chama a opção de estilo antigo de opções "herdadas", mas eu tenho certeza que já vi o nome "opções compactadas" ou "opções binned" (ou algo parecido) para descrever essa sintaxe antiga.

dd herdou suas opções não tracejadas de JCL (Job Control Language) na IBM mainframes.

Alguns desses utilitários também aceitam opções tracejadas e a especificação POSIX para ps não menciona as opções de estilo antigo. A especificação de dd lista "operandos" em vez de "opções" e tar não é padronizado pelo POSIX (o arquivador padrão é pax ). / p>

Note também que os utilitários mais recentes também usam opções não tracejadas (ou melhor, operandos) para determinar qual ação tomar. Você os encontrará em, e. git commit -p e lxc exec etc.

Isso é bem semelhante à "ação" de tar . De o original tar manual na versão 7 do Unix:

tar saves and restores files on magtape. Its actions are controlled by the key argument. The key is a string of characters containing at most one function letter and possibly one or more function modifiers.

A implementação original de ps no Unix Release 3 tinha opções tracejadas (observe que a seção do manual é 8 em vez de 1, ou seja, na seção de utilitários administrativos). No próximo lançamento, ele os perdeu .

Nota: estou misturando a terminologia para "opção" e "operando" por toda parte. Uma "opção" é tecnicamente uma letra ou um caractere tracejado, por ex. -a , enquanto um "operando" é uma não opção. Ambos são argumentos de linha de comando.

    
por 24.09.2017 / 10:21