Il n'existe pas de norme généralisée. Il y a une certaine cohérence, par exemple dans les programmes GNU, mais vous devez vérifier la documentation de chaque programme.
Citation : Wikipedia C'est moi qui souligne :
Dans les systèmes de type Unix, le trait d'union ASCII-minus est couramment utilisé pour spécifier des options. Ce caractère est généralement suivi d'une ou plusieurs lettres . Un argument qui est un simple trait d'union sans aucune lettre spécifie généralement qu'un programme doit traiter les données provenant de l'entrée standard ou envoyer des données à la sortie standard. Deux caractères tiret-moins ( -- ) sont utilisés dans certains programmes pour spécifier des "options longues" où des noms d'options plus descriptifs sont utilisés. . C'est une caractéristique commune des logiciels GNU.
Habituellement, les traits d'union indiquent un argument prédéfini. Je pense qu'il est utilisé pour les différencier, par exemple, des noms de fichiers ou d'autres étiquettes que vous pourriez utiliser comme arguments. Ce n'est pas toujours le cas, cependant (voir ci-dessous).
Vous trouverez souvent le même argument disponible à la fois comme option courte et longue, comme par exemple dans ls .
Certains programmes utilisent un seul trait d'union pour les options à un caractère, et deux traits d'union pour les options à plusieurs caractères, mais pas tous (GNU find
me vient à l'esprit). Certains programmes proposent des traits d'union facultatifs ou ne les utilisent pas du tout ( tar
ou BSD ps
me viennent à l'esprit).
Parfois, les options longues ( --foo
) nécessitent des arguments, tandis que les options courtes ( -f
) ne le font pas (ou du moins impliquent un argument par défaut spécifique).
Options courtes (par exemple cut -d ' '
) peuvent avoir des arguments , tandis que les options longues (par exemple, l'option ls --all
) ne les ont pas nécessairement.
Pour définir un comportement particulier d'un programme, vous devez parfois utiliser une option courte, pour d'autres vous devez utiliser une option longue, et pour certains vous avez le choix.
Par ailleurs, certains programmes peuvent gérer pas d'espace entre une option et son argument alors que d'autres ne le peuvent pas.
Comme je l'ai écrit au début, il n'y a tout simplement pas de comportement commun ou de norme. Souvent, vous pouvez retrouver la trace d'un comportement similaire dans la même bibliothèque utilisée pour l'analyse des arguments, mais vous n'avez probablement pas envie de lire les sources pour le découvrir.
Vous ne pouvez vraiment pas déduire la syntaxe des arguments d'un programme de celle d'un autre.
Si l'on considère également Windows, la situation est encore pire : alors que les appels de la ligne de commande de Windows utilisent traditionnellement /f
(au moins la plupart du temps, des caractères uniques) pour les options, avec :
comme séparateur entre les options et leur valeur (voir par exemple aquí ) ; les utilitaires multiplateformes sont très répandus (comme ceux que vous mentionnez) et apportent la syntaxe plus courante du trait d'union pour les arguments, avec toutes les incohérences mentionnées ci-dessus.