Qual é a diferença entre um flag, uma opção e um argumento? [fechadas]

11
  • ls -a (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 consultar a listagem 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 isso é tudo. O que me impede de chamar isso de "opção de leitura"?

Eu escrevo e edito a documentação técnica, principalmente no DocBook XML, e estou procurando uma explicação da diferença, que é consistente e precisa quanto possível. No entanto, já estou vendo um padrão se formando:

  1. as bandeiras tendem a ser booleanas. por exemplo, setenforce 0
  2. As opções
  3. ajudam a definir como um comando deve se comportar. Alguns podem ser opcionais.
  4. argumentos dizem aos comandos em qual objeto operar.

Eu podia me ver combinando bandeiras 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 ser suficientemente diferentes para mantê-los como tais.

    
por JohnDoea 26.05.2016 / 05:44

2 respostas

12

Não há consistência em nomear o uso de "opção", "argumento" e "sinalizador", e não há autoridade de imposição no mundo do desenvolvimento de software para impor o uso. Isso acontece para todos os textos: depois de mais de 30 anos usando a palavra "diretório", agora tenho que lidar com pessoas usando a palavra "pasta", tendo sido confundida com o novo idioma da Microsoft.

As coisas que você coloca na linha de comando depois de um comando são frequentemente chamadas de argumentos para o comando, como argumentos para uma chamada de função. Mas eu também os vi sendo chamados de parâmetros. O fato de que eles são chamados de argumentos no manual C (portanto, argc e argv ) provavelmente contribuiu para esse uso da palavra.

Além dos tutoriais de linguagem de programação, o uso específico de palavras em bibliotecas (como getopt para C, argparse para Python, etc.) manipulando esses parâmetros ajudou a padronizar algumas das palavras, mas nem sempre. / p>

A palavra "opção" vem de "opcional", indicando que eles podem ser deixados de fora. As opções geralmente são precedidas por um único traço ( - ) ou duplo ( -- , opção longa). E há opções que não são opcionais (procure, por exemplo, no arparse manual e procure por "required"). Alguns comandos não usam nem impõem o uso de - (por exemplo, tar , ps e dd ). Uma opção pode receber um argumento (por exemplo, -w80 e --color=always ), às vezes mais.

Os sinalizadores são, na minha experiência, os mesmos que as opções, mas na maioria das vezes usados para valores booleanos (ou seja, não aceitando os próprios argumentos).

Como todo programador tem a opção de tentar procurar alguma forma padrão de fazer as coisas e nomear as coisas, mas também pode reinventar a roda sem muito custo extra, a nomenclatura nunca será consistente. E uma vez que você documente seu código e esteja claro que novo significado você dá a essas palavras, dando exemplos, esses nomes e significados podem ser aplicados se houver pessoas suficientes aprendendo a usar as palavras de lá.

    
por 26.05.2016 / 07:50
4

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 atuar (por exemplo -a, -l, --verbose, --output, -name, -c, etc), enquanto um argumento informa a função < em> o que atuar de / para (por exemplo, * , file1, hostname, database).

    
por 26.05.2016 / 07:38