Posicionamento de opções de linha de comando no bash

3

Eu comecei a usar um Mac e fiquei frustrado porque as opções de linha de comando são necessárias imediatamente após o comando para que isso funcione:

ls -la /usr

mas isso não acontece:

ls /usr -la

ls: -la: nenhum arquivo ou diretório

Existe alguma maneira de mudar isso? Ou alguém pode me dizer por que o posicionamento de opções é agnóstico na maioria das plataformas Linux, mas não no Mac?

    
por nrambeck 09.05.2010 / 14:36

3 respostas

1

O Linux usa ferramentas GNU. OS X usa ferramentas BSD. As ferramentas BSD são muito mais exigentes quanto à ordem e presença de argumentos de linha de comando.

    
por 09.05.2010 / 14:42
1

O processamento da linha de comando é determinado em um código-fonte do programa que se tornou um comando específico.

Frequentemente, um grupo de comandos usa uma biblioteca de processamento de linha de comando específica (GNU getargs, ou no caso de scripts Perl GetOpts :: Long são exemplos disso), embora o processamento da linha de comando tenha sido enrolado à mão ou usado qualquer biblioteca específica é totalmente dependente do comando.

Portanto, as habilidades de processamento de linha de comando (por exemplo, suporte para reordenação, uso de -- para delinear o fim de sinalizadores, dobra de -a -b em -ab , etc ...) dependem inteiramente do código fonte do indivíduo aplicativos e / ou as bibliotecas que eles usam.

O padrão específico que você observou provavelmente se deve a diferentes bibliotecas de processamento de linha de comando (ou código de processamento individual de argolas manuais usadas pelos desenvolvedores) entre o Linux com suas raízes GNU e OSX (origens IIRC, BSD mas não seguras)

    
por 09.05.2010 / 15:24
0

As razões são prováveis nas bibliotecas de processamento de linha de comando, mas se eu tivesse que adivinhar a motivação das bibliotecas de ordenação estritas, é para impor consistência. Primeiro parâmetros nomeados, em seguida, parâmetros posicionais. Uma vez que a consistência é imposta, torna as linhas de comando mais fáceis de analisar mentalmente.

    
por 09.05.2010 / 16:07

Tags