ls -a
(Eu considero-a
uma opção)sudo -u username
(-u
= opção,username
= arg)chmod 664 my-dir
(664
= opção,my-dir
= arg)
Não consigo pensar em um exemplo que possa dizer "isso é uma bandeira", exceto talvez ao olhar para a lista de diretórios:
-r--------. 1 david david 3344 May 19 17:48 611056.pdf
Isso tem o "sinalizador de leitura" definido para o proprietário, mas é tudo. O que me impede de chamar isso de "opção de leitura"?
Escrevo e edito a documentação técnica, principalmente no DocBook XML, e estou procurando uma explicação da diferença, que seja consistente e precisa quanto possível. No entanto, eu já estou vendo um padrão se formando:
- sinalizadores tendem a ser booleanos. por exemplo,
setenforce 0
- As opções ajudam a definir como um comando deve se comportar. Alguns podem ser opcionais.
- argumentos dizem comandos em que objeto operar.
Eu podia me ver combinando sinalizadores e opções (algumas opções podem ter uma dúzia de valores possíveis, mas os booleanos têm apenas dois). Os argumentos parecem suficientemente diferentes para mantê-los como tais.
ls -a
exemplo. (Para mim, uma bandeira é uma variável booleana.)tar c abc.txt > x.tar
existec
uma função . Você está tentando chamar isso de opção e isso é completamente inapropriado.Respostas:
Não há definições consistentes dos termos "opção", "argumento" e "sinalizador", e não há autoridade central no mundo do desenvolvimento de software que possa impor seu uso. Isso acontece com muita terminologia: depois de mais de 30 anos usando a palavra "diretório", agora tenho que lidar com pessoas que usam a palavra "pasta" que foram confundidas com a nova linguagem da Microsoft.
Existem diferentes maneiras pelas quais definições de consenso para termos podem ocorrer na programação. No caso de "argumento" / "opção" / "sinalizador", manuais e tutoriais canônicos para linguagens de programação ajudaram a impor o uso, assim como os termos usados em bibliotecas comuns.
Por exemplo, as coisas que você coloca na linha de comando após um comando geralmente são chamadas de "argumentos" para o comando, por analogia com argumentos para uma chamada de função , e isso provavelmente ocorre em parte porque são chamadas de "argumentos" no manual C ( daqui
argc
eargv
). Aargparse
biblioteca Python também ajuda a aplicar o termo "argumento". No entanto, eu também os vi sendo chamados de "parâmetros".O termo "opção" é derivado de "opcional", o que implica que eles podem ser deixados de fora. A
getopt
biblioteca C é um uso desse termo. Mas há precedentes para "opções" que não são realmente opcionais: por exemplo, oargparse
manual afirma que é possível criar uma "opção necessária" (embora também diga que essa é "geralmente considerada má forma"). As opções são muitas vezes precedida por um único (-
) ou duplo (--
e de longo opção) traço, mas existem comandos bem conhecidas que não exige ou impõe o uso de traço para opções (por exemplo,tar
,ps
edd
). Uma opção pode, por si só, aceitar um argumento (por exemplo,-w80
e--color=always
) ou, ocasionalmente, vários argumentos.Os "sinalizadores" são, na minha experiência, o mesmo que as opções, mas geralmente não recebem argumentos e representam essencialmente opções on-off booleanas.
Em uma nota mais ampla, como todo programador tem a opção de procurar uma maneira padrão de fazer e nomear coisas, mas também pode reinventar a roda sem muito custo extra, a nomeação nunca será consistente. E depois de documentar seu código, e fica claro qual o novo significado que você atribuiu a essas palavras, dando exemplos, esses nomes e significados podem permanecer se houver pessoas suficientes que os buscarem no seu código.
fonte
Um sinalizador é um tipo de opção, uma opção do tipo booleano, e sempre é falso por padrão (por exemplo - --verbose, --quiet, --all, --long, etc).
Uma opção diz à função como agir (por exemplo, -a, -l, --verbose, --output, -name, -c, etc.), enquanto um argumento diz à função em que agir / de (por exemplo
*
, arquivo1, nome do host, banco de dados).fonte
git pull git://bla/bla
, opull
é um argumento que diz nogit
que trabalhar.pull
é um comando. Pode-se pensar em comandos como extensões do nome do aplicativo: git pull <...> é equivalente a um aplicativo chamadogit-pull
. Quando o aplicativo possui comandos, cada comando faz com que o aplicativo faça algo completamente diferente.tar
, usarc
para criar é chamado de função . E esse é exatamente o problema: não há padronização de termos, mesmo que pareça que você acha que há uma resposta