La discrimination entre l'option courte et longue est seulement `-`?

Sur le système Unix , les options commencent par - option courte, tandis que les options commencent par -- option longue. Est-ce que je comprends bien?

Cela fait partie des normes de encoding GNU, donc tout le logiciel GNU (et beaucoup de non-GNU) le suit. Cependant, ce n'est en aucun cas un standard absolu; il existe d'autres moyens de le mettre en œuvre, tels que:

  • -Wlong-option : -Wlong-option du compilateur C, et spécifiée comme telle dans POSIX.
  • -long-option (c'est -long-option dire, un seul tiret): pris en charge par la plupart des applications (généralement en alternative à la version à double tiret) qui n'ont pas d'options courtes.
  • +long-option : cela devient démodé, mais il y a quelques anciens logiciels qui réservaient le tiret pour les options courtes, et le signe plus pour les options longues. Pas beaucoup utilisé aujourd'hui, principalement parce que la plupart des implémentations de getopt () ne le supportent pas
  • long-option : il existe malheureusement aussi des applications qui confondent les options avec des arguments . Je crois que MegaCLI est l'un des contrevenants là-bas (c'est un délinquant dans presque tout le rest, de toute façon).

La méthode --long-opt est un GNUisme initié vers 1990.

Multics utilise des options -long avec un seul tiret et le projet Multics a été lancé dans les années 1960.

UNOS est le premier clone UNIX (lancé par un groupe d'anciens employés d'AT & T en 1980) et UNOS introduit un parsingur d'options généralisé (le premier dans le monde UNIX ) en avril 1982. Cet parsingur d'options -long pris en charge les options -long en un seul tiret.

AT&T introduit getopt() entre 1983 et 1984, mais getopt() n'a pas été réentrante avant qu'une quasortingème variable globale supplémentaire ait été introduite en 1989 pour les getopts de Bourne Shell.

POSIX implémente des opérandes qui ressemblent à de longues options avec un seul tiret avec test et find

AT&T UNIX introduit des options -long en utilisant un seul tiret vers 1983 tout en permettant par exemple de kill -INT <pid> .

tar et ar n'utilisaient pas le terme option dans leur documentation mais utilisaient plutôt le terme keyletter . Plus tard, les implémenteurs ont ajouté le support pour a - keyletter qui est ignoré, donnant l'printing que y CLI peut ressembler à d'autres commands UNIX.

dd utilise un model d'option propre, mais ce model d'option est compatible avec le model d'option long de UNOS qui définit les options longues comme suit:

  • -long
  • -long arg
  • long=arg
  • -long=arg
  • long= arg
  • -long= arg

L' UNOS options UNOS est supérieur à l'implémentation GNU longopt car il utilise une string de format qui permet de convertir automatiquement des arguments entiers et booleans et qui permet d'implémenter des fonctions de callback pour l'option eny si désiré. Il n'est pas nécessaire de réorganiser la list d'arguments en raison de l'interface de la fonction de callback.

L' getopt() Solaris getopt() en charge les options longues en tant qu'alias aux options courtes depuis 2004, mais ne les a pas vraiment documentées même si elles étaient utilisables par le Bourne Shell via getopts(1) depuis son introduction.

Le Schily Bourne Shell documente cette fonctionnalité et a en outre introduit d'autres getopt() qui permettent de longues options qui ne sont pas simplement des alias à une option courte et qui permettent des options longues simples.

Voir http://schillix.sourceforge.net/man/man1/bosh.1.html dans la section des commands getopts. pour getopts.

Un parsingur d'options modernisé et amélioré basé sur les idées de l' UNOS options UNOS trouve dans les schily-tools de libschily/getargs.c

http://sourceforge.net/projects/schilytools/files/

il est utilisé dans les programmes schily tool qui ne sont pas basés sur le code AT & T et entraîne less de problèmes avec les noms d'options mal définis tels que dans mkisofs