Me deparei com uma variação confusa no entendimento de quais são as opções e argumentos em relação à sintaxe dos comandos.
Por exemplo, eu encontrei definições como:
command -a -b -c d e f
alguns diferem entre
-a -b -c
eles, chame-os de opções ou opções ed e f
chame-os de argumentos.command -a -b -c d e f
alguns, por exemplo, um
bash
manual, chamam todos os-a -b -c d e f
argumentos e explicam que todos eles são acessíveis a partir de um script,$1 $2 $3 $4 $5 $6
respectivamente.command -a b=c
alguns chamam
-a
uma opção,b
um argumento ec
o valor, mas outros os misturam como nos dois primeiros pontos, em uma variedade chamando todos os-a b c
argumentos.
Essas três versões são apenas exemplos de uma variedade de diferentes tipos de chamadas, eu nem sei como listá-las todas, mas notei que, com certeza, não existe uma convenção de nomenclatura fixa.
Ou, pelo menos, não há uma convenção de nomenclatura padronizada que eu conheça, porque me deparei com diferentes fontes aleatórias, mas mesmo entre sites ou manuais oficiais de Linux e GNU, eu pude encontrar essa inconsistência.
Existe um esquema de nomeação oficial inquestionável ao qual posso me referir?
fonte
Respostas:
Adaptado da seção "Utility Argument Syntax" do padrão POSIX :
O utilitário no exemplo é nomeado
utility_name
. É seguido por opções , argumentos de opção e operandos .Os argumentos que consistem em
-
caracteres e letras ou dígitos únicos, comoa
, são conhecidos como opções (ou, historicamente, sinalizadores ). Certas opções são seguidas por um argumento de opção , como mostrado em[-c option_argument]
. Os argumentos após as últimas opções e argumentos da opção são nomeados operandos .O padrão também define "argumento" como
Todas as coisas após a
utility_name
linha de comando são os argumentos do utilitário , e todos aparecem nos parâmetros posicionais, se for um shell script. Os termos opção, opção-argumento e operando são nomes mais específicos para esses argumentos na linha de comando."Flag" e "switch" são sinônimos comuns de "option".
No caso de
-a
eb=c
são argumentos,-a
é uma opção se o utilitário o reconhecer como tal (oln
utilitário não tem-x
opção, portanto-x
não é uma opçãoln
estritamente falando eln -x
acionaria uma mensagem de diagnóstico),b=c
é um argumento de opção se a-a
opção aceita um argumento, caso contrário, é um operando,b
e nãoc
são opções, argumentos de opção e não operandos em si.Como você notou no meu texto acima, trabalhar na sinopse de um utilitário (conforme fornecido pelo manual do utilitário) teria sido mais fácil do que tentar decodificar um comando genérico digitado na linha de comando. O manual indicará claramente quais opções recebem argumentos de opção e quais argumentos são operandos etc.
Chamar
c
um "valor" é IMHO perfeitamente ok. Não é algo padronizado, mas poucos o entenderiam mal se você dissesse "c
é o valor dado ab
". Ficaria claro a partir do contexto do utilitário em questão.Por exemplo
Qualquer pessoa que saiba sobre
awk
isso diria que-v var="d"
significa " aawk
variávelvar
recebe o valord
na linha de comando ".fonte