Je commence à travailler dans le shell et l'utilisation de ces commandes semble arbitraire. Y at-il une raison pour laquelle un drapeau a un tiret unique et un autre pourrait avoir un tiret double?
Je commence à travailler dans le shell et l'utilisation de ces commandes semble arbitraire. Y at-il une raison pour laquelle un drapeau a un tiret unique et un autre pourrait avoir un tiret double?
Réponses:
Un seul trait d'union peut être suivi de plusieurs indicateurs d'un seul caractère. Un double trait d'union préfixe une seule option multicaractère.
Considérons cet exemple:
tar -czf
Dans cet exemple, -czfspécifie trois drapeaux d'un seul caractère: c, zet f.
Considérons maintenant un autre exemple:
tar --exclude
Dans ce cas, --excludespécifie une seule option multicaractère nommée exclude. Le double tiret disambiguates l'argument de ligne de commande, assurant que l' tarinterprète comme au excludelieu d'une combinaison de e, x, c, l, u, det e.
cdrecordmentionné il y a des années dans les commentaires ci-dessus.
Tout dépend du programme. Habituellement, "-" est utilisé pour les options "courtes" (une lettre, -h), et "-" pour les options "longues" (--help).
Les options courtes peuvent généralement être combinées (donc "-h -a" est identique à "-ha")
Dans les systèmes de type Unix, le trait d'union minuscule ASCII est généralement utilisé pour spécifier des options. Le caractère est généralement suivi d'une ou plusieurs lettres. Un argument qui ne comporte qu'un seul trait d'union, sans lettre, indique généralement qu'un programme doit gérer les données provenant de l'entrée standard ou envoyer des données à la sortie standard. Deux tirets - moins (-) sont utilisés sur certains programmes pour spécifier des "options longues" dans lesquelles des noms d'options plus descriptifs sont utilisés. C'est une caractéristique commune du logiciel GNU.
C'est vraiment une convention. Cependant, cela peut aider les analyseurs syntaxiques à connaître plus efficacement les options transmises au programme. En outre, il existe des utilitaires soignés qui peuvent aider à analyser ces commandes, tels que getopt(3)ou le non standard getopt_long(3)pour aider à analyser les arguments d'un programme.
C'est bien, car nous pouvons avoir plusieurs options courtes combinées, comme le disent d'autres réponses, comme tar -xzf myfile.tar.gz.
S'il y avait un argument "lisa" ls, il y aurait probablement un sens différent à taper à ls -lisacelui de ls --lisa. Les premiers sont les l, i, set les aparamètres, pas le mot.
En fait, vous pourriez écrire ls -l -i -s -aexactement la même chose que ls -lisa, mais cela dépend du programme.
Il y a aussi des programmes qui n'obéissent pas à cette convention. Plus particulièrement pour ma vue, ddet gcc.
options courtes avec tiret unique vs options longues avec tiret double
les options courtes peuvent être combinées en un seul argument;
for example: ls -lrt #instead of ls -l -r -t
Si nous autorisons les options longues avec un tiret unique, cela crée une ambiguïté. Pour résoudre ce problème, nous utilisons un double tiret pour les options longues.