GETOPT(1) Commandes de lutilisateur GETOPT(1) NOM getopt - Analyser des options de lignes de commandes (version amelioree) SYNOPSIS getopt optstring parameters getopt [options] [--] optstring parameters getopt [options] -o|--options optstring [options] [--] parameters DESCRIPTION getopt is used to break up (parse) options in command lines for easy parsing by shell procedures, and to check for valid options. It uses the GNU getopt(3) routines to do this. Les parametres fournis a getopt sont de deux types : le premier est constitue des options qui modifient la facon dont getopt fera l'analyse (les options et chaine_options dans le SYNOPSIS) et les parametres a analyser (parametres dans le SYNOPSIS). Le second type commence des le premier parametre qui n'est pas une option ou apres la premiere occurrence de << -- >>. Si aucune option << -o >> ou << --options >> n'est presente dans la premiere partie, le premier parametre de la seconde partie sera utilise comme chaine d'options courtes. If the environment variable GETOPT_COMPATIBLE is set, or if the first parameter is not an option (does not start with a '-', the first format in the SYNOPSIS), getopt will generate output that is compatible with that of other versions of getopt(1). It will still do parameter shuffling and recognize optional arguments (see the COMPATIBILITY section for more information). Les implementations traditionnelles de getopt(1) ne gerent pas les espaces ou autres caracteres speciaux (specifiques a chaque interpreteur de commandes) dans les parametres (options ou non). Pour resoudre ce probleme, cette implementation peut produire une sortie, entre guillemets, qui doit etre interpretee de nouveau par l'interpreteur de commandes (en general avec la commande eval). Cela permet de preserver ces caracteres, mais vous devez appeler getopt d'une facon non compatible avec les autres versions (la deuxieme ou troisieme forme dans le SYNOPSIS). Pour determiner si cette version amelioree de getopt(1) est installee, vous pouvez utiliser l'option speciale de test (-T). OPTIONS -a, --alternative Permettre aux options longues de ne commencer que par un seul << - >>. -l, --longoptions options_longues Les options longues (plusieurs caracteres) a reconnaitre. Plusieurs noms d'option peuvent etre fournis en une seule fois, en separant les noms par des virgules. Cette option peut etre fournie plusieurs fois, les options_longues se cumulent. Chaque nom d'option dans options_longues peut etre suivi d'un deux-points pour indiquer que l'option attend un parametre, et par deux signes deux-points pour indiquer qu'elle a un parametre optionnel. -n, --name nom-de-programme Le nom qui sera utilise par getopt(3) pour signaler les erreurs. Notez que les erreurs de getopt(1) sont signalees comme provenant de getopt. -o, --options options_courtes The short (one-character) options to be recognized. If this option is not found, the first parameter of getopt that does not start with a '-' (and is not an option argument) is used as the short options string. Each short option character in shortopts may be followed by one colon to indicate it has a required argument, and by two colons to indicate it has an optional argument. The first character of shortopts may be '+' or '-' to influence the way options are parsed and output is generated (see the SCANNING MODES section for details). -q, --quiet Desactiver le signalement des erreurs par getopt(3). -Q, --quiet-output Ne pas produire la sortie normale. Les erreurs sont toujours remontees par getopt(3), sauf si l'option -q est utilisee. -s, --shell shell Set quoting conventions to those of shell. If the -s option is not given, the BASH conventions are used. Valid arguments are currently 'sh', 'bash', 'csh', and 'tcsh'. -T, --test Verifier si la version de getopt(1) correspond a cette version amelioree ou a une version plus ancienne. Aucune sortie n'est creee et la valeur de retour est 4. Les autres implementations de getopt(1) (ou celle-ci si la variable d'environnement GETOPT_COMPATIBLE est positionnee) renverront << -- >>, avec une valeur de retour de 0. -u, --unquoted Ne pas placer la sortie entre guillemets. Remarquez que les espaces et caracteres speciaux (pour l'interpreteur de commandes utilise) peuvent poser des problemes dans ce mode (comme pour les autres implementations de getopt(1)). -h, --help Afficher l'aide-memoire puis quitter. -V, --version Afficher la version et quitter. ANALYSE Cette section indique le format de la seconde partie des parametres de getopt (parametres dans le SYNOPSIS). La section suivante (SORTIE) decrit la sortie renvoyee. Ces parametres sont generalement ceux fournis a une fonction shell. Il faut faire attention a ce que chaque parametre fourni a la fonction corresponde bien a un parametre de la liste des parametres de getopt (consultez EXEMPLES). Toutes les analyses sont faites en utilisant les routines de GNU getopt(3). Les parametres sont analyses de la gauche vers la droite. Chaque parametre est classe en option courte, option longue, argument d'une option ou parametre n'etant pas une option. Une option courte est un << - >> suivi par le caractere de l'option. Si l'option a un parametre obligatoire, il peut etre indique juste apres le caractere de l'option ou comme parametre suivant (c'est-a-dire en les separant par une espace). Si l'option a un parametre optionnel, il doit etre ecrit juste apres le caractere de l'option (quand le parametre est present). Il est possible d'indiquer plusieurs options courtes apres un << - >>, tant que toutes les options (sauf peut-etre la derniere) n'ont pas de parametre obligatoire ou optionnel. Une option longue commence normalement par << -- >>, suivi par le nom de l'option longue. Si l'option necessite un parametre, celui-ci peut etre indique juste apres le nom de l'option, en inserant le caractere << = >> entre, ou il peut etre indique dans le parametre suivant (c'est-a-dire en le separant par une espace). Si l'option a un parametre optionnel, il doit etre indique juste apres le nom de l'option, en inserant le caractere << = >> entre, si le parametre est present (quand vous ajoutez le caractere << = >> sans rien derriere, c'est comme si le parametre n'etait pas present ; c'est un bogue mineur, consultez la section BOGUES). Les options longues peuvent etre abregees, tant que l'abreviation n'est pas ambigue. Chaque parametre ne commencant pas par un << - >> et n'etant pas un parametre obligatoire est un << parametre n'etant pas une option >>. Chaque parametre situe apres un << -- >> est toujours interprete comme un << parametre n'etant pas une option >>. Si la variable d'environnement POSIXLY_CORRECT est positionnee, ou si la chaine des options courtes commence par un << + >>, tous les parametres suivant le premier parametre n'etant pas une option sont interpretes comme des parametres n'etant pas des options. SORTIE La sortie est generee pour chaque element decrit dans la section precedente. Elle reprend l'ordre des elements indiques en entree, a l'exception des parametres n'etant pas des options. La sortie peut etre faite dans un mode compatible (non protege : sans guillemets) ou de telle sorte que les espaces ou autres caracteres speciaux des parametres soient preserves (consultez PROTECTIONS). Quand la sortie est utilisee dans un script shell, elle paraitra composee d'elements distincts qui peuvent etre traites un par un (en utilisant la commande shift de la plupart des langages de script). Ce n'est pas parfait dans le mode non protege parce que les elements peuvent etre coupes a des endroits non prevus s'ils contiennent des espaces ou des caracteres speciaux. En cas de probleme lors de l'analyse des parametres, par exemple si un parametre obligatoire n'est pas trouve ou si une option n'est pas reconnue, une erreur est renvoyee sur la sortie d'erreur standard. Les elements incrimines ne seront pas affiches et un code d'erreur non nul est renvoye. Pour une option courte, un seul << - >> et le caractere de l'option sont generes comme un parametre. Si l'option est suivie de son parametre, le parametre suivant de la sortie sera le parametre de l'option. Si l'option accepte un parametre optionnel, mais qu'aucun n'a ete trouve, un parametre vide sera genere dans le mode protege, mais aucun dans le mode non protege (ou mode compatible). Notez que beaucoup d'autres implementations de getopt(1) ne gerent pas les parametres optionnels. Si plusieurs options courtes ont ete precisees apres un unique << - >>, chacune sera presente dans la sortie dans un parametre distinct. Pour une option longue, << -- >> et le nom complet de l'option sont generes en un seul parametre. C'est le cas que l'option soit abregee ou qu'elle soit indiquee avec un seul << - >> dans l'entree. Les parametres sont traites comme pour les options courtes. Normalement, aucun parametre n'etant pas une option n'est genere sur la sortie tant que toutes les options et leurs parametres n'ont pas ete traites. Ensuite, << -- >> est genere separement comme un parametre, et est suivi des parametres n'etant pas des options, dans l'ordre ou ils ont ete trouves, chacun comme un parametre distinct. Si le premier caractere de la chaine des options courtes est un << - >>, et seulement dans ce cas, les parametres n'etant pas des options sont generes quand ils sont trouves dans l'entree (ce n'est pas gere si la premiere forme du SYNOPSIS est utilisee ; dans ce cas, les << - >> et << + >> de tete sont ignores). PROTECTIONS Dans le mode compatible, les espaces et caracteres speciaux dans les parametres des options ou les parametres n'etant pas des options ne sont pas geres correctement. Comme la sortie est envoyee a un script shell, le script ne sait pas comment il doit separer les parametres. Pour eviter ce probleme, cette implementation propose un mode protege. L'idee est de generer la sortie avec des protections (a l'aide de guillemets) autour des parametres. Quand cette sortie est envoyee de nouveau a un interpreteur de commandes (generalement en utilisant la commande eval de l'interpreteur), le decoupage en parametres est correct. La protection n'est pas activee si la variable d'environnement GETOPT_COMPATIBLE est positionnee, si la premiere forme du SYNOPSIS est utilisee ou si l'option << -u >> est trouvee. Les conventions de protection different suivant les interpreteurs de commandes. Vous pouvez preciser l'interpreteur de commandes que vous utilisez avec l'option << -s >>. Les interpreteurs de commandes suivants sont geres : << sh >>, << bash >>, << csh >> et << tcsh >>. En fait, seuls deux types sont differencies : ceux utilisant les conventions de sh et ceux utilisant les conventions de csh. Il y a de grandes chances que si vous utilisez un autre langage de script, il utilise une de ces conventions. MODES D'ANALYSE Le premier caractere de la chaine de description des options courtes peut etre un << - >> ou un << + >> pour utiliser un mode special d'analyse. Si la premiere forme du SYNOPSIS est appelee, ils sont ignores ; mais la variable d'environnement POSIXLY_CORRECT est toujours examinee. Si le premier caractere est un << + >>, ou si la variable d'environnement POSIXLY_CORRECT est positionnee, l'analyse s'arrete des qu'un parametre n'etant pas une option est rencontre (c'est-a-dire un parametre qui ne commence pas par << - >>). Aucun des parametres suivants ne sera considere comme une option. Si le premier caractere est un << - >>, les parametres qui ne sont pas des options sont places dans la sortie a la position ou ils ont ete trouves ; normalement, ils sont tous places a la fin de la sortie, juste apres le parametre << B*-- >> qui a ete genere. Notez que dans ce mode, le parametre << --* >> est encore genere, mais il sera toujours le dernier parametre. COMPATIBILITE Cette version de getopt(1) a ete ecrite pour etre aussi compatible que possible avec les autres versions. En general, vous pouvez vous contenter de les remplacer par cette version sans aucune modification, avec meme certains avantages. If the first character of the first parameter of getopt is not a '-', getopt goes into compatibility mode. It will interpret its first parameter as the string of short options, and all other arguments will be parsed. It will still do parameter shuffling (i.e., all non-option parameters are output at the end), unless the environment variable POSIXLY_CORRECT is set, in which case, getopt will prepend a '+' before short options automatically. La variable d'environnement GETOPT_COMPATIBLE force getopt dans un mode de compatibilite. Avec a la fois cette variable d'environnement et POSIXLY_CORRECT, il sera 100 % compatible pour les programmes << difficiles >>. D'habitude, cependant, ni l'une ni l'autre n'est necessaire. Dans ce mode, les << - >> ou << + >> de tete des options courtes sont ignores. CODES DE RETOUR getopt returns error code 0 for successful parsing, 1 if getopt(3) returns errors, 2 if it does not understand its own parameters, 3 if an internal error occurs like out-of-memory, and 4 if it is called with -T. EXEMPLES Example scripts for (ba)sh and (t)csh are provided with the getopt(1) distribution, and are installed in /usr/share/doc/util-linux directory. ENVIRONNEMENT POSIXLY_CORRECT Cette variable d'environnement est utilisee par getopt(3). Lorsqu'elle est positionnee, l'analyse s'arrete au premier parametre n'etant ni une option ni le parametre d'une option. Tous les parametres restants sont egalement interpretes comme des parametres n'etant pas des options, qu'ils commencent par un << - >> ou non. GETOPT_COMPATIBLE Forcer getopt a utiliser le premier format d'appel, comme indique dans le SYNOPSIS. BOGUES getopt(3) can parse long options with optional arguments that are given an empty optional argument (but cannot do this for short options). This getopt(1) treats optional arguments that are empty as if they were not present. La syntaxe n'est pas tres intuitive si vous ne voulez pas d'option courte : vous devez explicitement les definir comme des chaines vides. AUTEUR Frodo Looijaard <frodo@frodo.looijaard.name> VOIR AUSSI bash(1), tcsh(1), getopt(3) SIGNALER DES BOGUES Pour signaler un bogue, utilisez le gestionnaire de bogues <https://github.com/util-linux/util-linux/issues>. DISPONIBILITE La commande getopt fait partie du paquet util-linux, elle est disponible sur l'archive du noyau Linux <https://www.kernel.org/pub/linux/utils/util-linux/>. util-linux 2.41 2025-03-29 GETOPT(1)