Sintaxe de comando Unix/Linux

Sintaxe de comando Unix/Linux

Quando os comandos do Linux listam seu uso, geralmente é assim que eles fazem (por exemplo, wget):

wget [option]... [URL]...

Pelo que entendi desse padrão de especificação de uso de comando, esta não é a maneira usual de regex de especificar padrões e para o comando wget diz que não é obrigatório especificar nenhuma opção e por essa lógica não é obrigatório especificar qualquer URL como bem. Quero dizer, posso fazer diretamente

wget www.google.com

e isso vai funcionar. Portanto as opções não são obrigatórias. Se as opções não forem obrigatórias porque estão entre colchetes, seguir essa lógica especificando um URL também não deve ser obrigatório e apenas

wget

como um comando também deve funcionar. Minha pergunta é: existe algum documento onde esse padrão de especificação do uso de comandos é elaborado?

Responder1

Normalmente, uma sintaxe onde [...] é usada para indicar argumentos opcionais e '|' é usado para indicar que um OR lógico é usado na maioria das páginas de manual. Depende de quem escreve a página de manual, pois não há autoridade que determine como uma página de manual deve ser lida. Mais específico para sua pergunta, no entanto, a página de manual é verdadeira neste caso. Você pode especificar um URL por meio da opção -i ou pode fornecer um URL propriamente dito. Portanto, você pode pensar nas opções como "condicionalmente opcionais". Na verdade, provavelmente deveria ser algo como

      ([option (excluding -i)] (-i file | URL)) 

mas você pode ver como isso ficaria complicado muito rapidamente. Portanto, você precisa considerar as descrições rápidas com cautela. Na minha experiência, a sintaxe do comando geralmente é a menor das suas preocupações.

Além disso, estou escolhendo aqui, mas o que você está vendo não é um regex;)

Responder2

Não acho que exista uma definição formal para isso (posso estar errado), mas parece que não existe um padrão para essa lógica, a julgar por uma amostragem aleatória de algumas páginas de manual.

Responder3

Eu esperaria que dissesse

wget [options] URL...
wget [-i|--input-file] file [options] [URL...]

A linha de sinopse única é um tanto comum nas páginas de manual do GNU, onde a documentação oficial é odocumentação de informações, e a página de manual é um resumo muito curto, geralmente descrevendo apenas as opções mais comuns.

Compare isso com ferramentas BSD comoalcatrãoe a ferramenta independentesincronizar novamente.

Por outro lado,Convenções de utilitários POSIXdizem que múltiplas linhas de sinopse devem ser usadas para opções mutuamente exclusivas, e a -iopção na verdade não é mutuamente exclusiva.

Responder4

man 7 man-pages(do pacote man-pages do Linux) explica algumas convenções das quais você deve estar ciente, mesmo se houver algumas páginas man que não seguem as convenções.

informação relacionada