Je suis tombé sur une variation déroutante dans la compréhension des options et des arguments concernant la syntaxe des commandes.
Par exemple, j'ai rencontré des définitions comme:
command -a -b -c d e f
certains diffèrent entre
-a -b -c
, appelez-les options ou commutateurs etd e f
en les appelant arguments.command -a -b -c d e f
certains, par exemple un
bash
manuel, appellent tous les-a -b -c d e f
arguments et expliquent que tous sont accessibles à partir d'un script par$1 $2 $3 $4 $5 $6
respectivement.command -a b=c
certains appellent
-a
une option,b
un argument etc
la valeur, mais d'autres les mélangent comme dans les deux premiers points, dans une variété appelant tous les-a b c
arguments.
Ces trois versions ne sont que des exemples pour une pléthore de différentes variétés d'appels, je ne sais même pas comment les énumérer toutes, mais j'ai remarqué qu'il n'y a pas de convention de nommage fixe.
Ou du moins, je ne connais pas de convention de dénomination normalisée, car j'ai rencontré différentes sources aléatoires, mais même parmi les sites ou manuels officiels affiliés à Linux et GNU, j'ai pu rencontrer cette incohérence.
Existe-t-il un schéma de dénomination officiel incontestable auquel je peux me référer?
la source
Réponses:
Adapté de la section "Utility Argument Syntax" de la norme POSIX :
L'utilitaire de l'exemple est nommé
utility_name
. Il est suivi par les options , les arguments d'option et les opérandes .Les arguments qui se composent de
-
caractères et de lettres ou de chiffres simples, tels quea
, sont connus sous le nom d' options (ou, historiquement, de drapeaux ). Certaines options sont suivies d'un argument d'option , comme illustré avec[-c option_argument]
. Les arguments suivant les dernières options et options-arguments sont appelés opérandes .La norme définit également "l'argument" comme
Toutes les choses après la
utility_name
ligne de commande sont les arguments de l'utilitaire , et ils apparaissent tous dans les paramètres de position s'il s'agit d'un script shell. Les termes option, option-argument et opérande sont des noms plus spécifiques pour ces arguments sur la ligne de commande."Flag" et "switch" sont des synonymes courants de "option".
Dans le cas de
-a
etb=c
sont des arguments,-a
est une option si l'utilitaire la reconnaît comme telle (l'ln
utilitaire n'a pas d'-x
option, donc-x
n'est pas une option àln
proprement parler etln -x
déclencherait un message de diagnostic),b=c
est un argument-option si l'-a
option prend un argument, sinon c'est un opérande,b
et nec
sont pas des options, des arguments d’option et non des opérandes en eux-mêmes.Comme vous le constatez dans mon texte ci-dessus, travailler à partir du synopsis d'un utilitaire (comme indiqué dans le manuel de l'utilitaire) aurait été plus facile que d'essayer de décoder une commande générique tapée sur la ligne de commande. Le manuel indiquera clairement quelles options prennent les arguments d'option et quels arguments sont des opérandes, etc.
Appeler
c
une "valeur" est à mon humble avis parfaitement ok. Ce n'est pas quelque chose qui est standardisé, mais très peu de gens vous comprendraient mal si vous dites "c
est la valeur donnée àb
". Cela ressortirait clairement du contexte de l'utilité en question.Par exemple
Quiconque est au courant
awk
dirait que cela-v var="d"
signifie " laawk
variablevar
se voit attribuer la valeurd
sur la ligne de commande ".la source