ls -a
(Je considère-a
une option)sudo -u username
(-u
= option,username
= arg)chmod 664 my-dir
(664
= option,my-dir
= arg)
Je ne peux pas penser à un exemple qui pourrait dire "ceci est un drapeau" sauf peut-être en regardant la liste des dir:
-r--------. 1 david david 3344 May 19 17:48 611056.pdf
Le "drapeau de lecture" est défini pour le propriétaire, mais c'est tout. Qu'est-ce qui m'empêche d'appeler cela une "option de lecture"?
J'écris et édite de la documentation technique, principalement en DocBook XML, et je cherche une explication de la différence, aussi cohérente et précise que possible. Cependant, je vois déjà un motif se former:
- les drapeaux ont tendance à être booléens. par exemple,
setenforce 0
- les options aident à définir le comportement d'une commande. Certains peuvent être facultatifs.
- Les arguments indiquent aux commandes sur quel objet opérer.
Je pouvais me voir combiner des indicateurs et des options (certaines options peuvent avoir une douzaine de valeurs possibles, mais les booléens n'en ont que deux). Les arguments semblent suffisamment différents pour les maintenir tels quels.
ls -a
exemple. (Pour moi, un drapeau est une variable booléenne.)tar c abc.txt > x.tar
y ac
une fonction . Vous essayez d'appeler cela une option et c'est complètement inapproprié.Réponses:
Il n'y a pas de définitions cohérentes des termes "option", "argument" et "indicateur", et il n'y a aucune autorité centrale dans le monde du développement logiciel qui pourrait imposer leur utilisation. Cela se produit avec beaucoup de terminologie: après plus de 30 ans d'utilisation du mot «répertoire», je dois maintenant traiter avec des personnes utilisant le mot «dossier» qui ont été confondues par le nouveau langage de Microsoft.
Il existe différentes manières de parvenir à des définitions consensuelles des termes dans la programmation. Dans le cas de "argument" / "option" / "flag", les manuels canoniques et les tutoriels pour les langages de programmation ont aidé à imposer l'utilisation, tout comme les termes utilisés dans les bibliothèques communes.
Par exemple, les choses que vous mettez sur la ligne de commande après une commande sont souvent appelées "arguments" à la commande, par analogie avec les arguments d'un appel de fonction , et c'est probablement en partie parce qu'elles sont appelées "arguments" dans le manuel C ( d'où
argc
etargv
). Laargparse
bibliothèque Python aide également à appliquer le terme "argument". Cependant, je les ai également vus être appelés "paramètres".Le terme "option" est dérivé de "facultatif", ce qui implique qu'ils peuvent être omis. La
getopt
bibliothèque C est une utilisation de ce terme. Mais il existe un précédent pour les "options" qui ne sont pas réellement facultatives: par exemple, leargparse
manuel indique que l'on peut créer une "option requise" (bien qu'il indique également que cela est "généralement considéré comme une mauvaise forme"). Les options sont souvent précédées d'un (-
) ou double (--
, longue option) tableau de bord, mais il y a des commandes bien connues qui ne nécessitent pas ou à faire exécuter l' utilisation du tableau de bord pour les options (par exempletar
,ps
etdd
). Une option peut elle - même prendre un argument (par exemple,-w80
et--color=always
), ou parfois plusieurs arguments."Les drapeaux" sont, selon mon expérience, les mêmes que les options, mais ne prennent généralement pas d'arguments eux-mêmes et représentent essentiellement des commutateurs booléens marche-arrêt.
Sur une note plus large, puisque chaque programmeur a la possibilité d'essayer de rechercher une façon standard de faire les choses et de nommer les choses, mais peut également réinventer la roue sans trop de frais supplémentaires, la dénomination ne sera jamais cohérente. Et une fois que vous avez documenté votre code, et il est clair quelle nouvelle signification vous avez donnée à ces mots en donnant des exemples, ces noms et ces significations pourraient bien rester s'il y a suffisamment de personnes qui les prennent dans votre code.
la source
Un indicateur est un type d'option, une option de type booléen, et est toujours faux par défaut (par exemple --verbose, --quiet, --all, --long, etc.).
Une option indique à la fonction comment agir (par exemple -a, -l, --verbose, --output, -name, -c, etc.), avec un argument qui indique à la fonction sur quoi agir / à partir de (par exemple
*
, file1, nom d'hôte, base de données).la source
git pull git://bla/bla
,pull
c'est un argument qui indique surgit
quoi travailler.pull
est une commande. On peut considérer les commandes comme des extensions du nom de l'application: git pull <...> est équivalent à une application appeléegit-pull
. Lorsque l'application a des commandes, chaque commande oblige l'application à faire quelque chose de complètement différent.tar
, utiliserc
pour créer s'appelle une fonction . Et c'est exactement le problème: il n'y a pas de standardisation des termes, même s'il semble que vous pensez qu'il y en a de votre réponse