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, -czf
spécifie trois drapeaux d'un seul caractère: c
, z
et f
.
Considérons maintenant un autre exemple:
tar --exclude
Dans ce cas, --exclude
spécifie une seule option multicaractère nommée exclude
. Le double tiret disambiguates l'argument de ligne de commande, assurant que l' tar
interprète comme au exclude
lieu d'une combinaison de e
, x
, c
, l
, u
, d
et e
.
cdrecord
mentionné 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 -lisa
celui de ls --lisa
. Les premiers sont les l
, i
, s
et les a
paramètres, pas le mot.
En fait, vous pourriez écrire ls -l -i -s -a
exactement 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, dd
et 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.