Bonjour,
Si je veux afficher tous les fichiers de mon répertoire courant j'ajoute à la commande ls l'argument -a. Et dans la plupart des arguments que l'on donne aux commandes on a des tirets. Mais dans certaines commandes on met aucun tiret dans les arguments comme par exemple systemctl status ou l'argument status n'a pas de tiret
Pourquoi certain programme ne respecte pas la norme avec le tiret
merci d'avance
# Options, arguments, sous-commandes
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
La convention d'origine, c'est d'utiliser des tirets pour les options — un seul pour une option courte, deux pour une option longue — et de laisser ensuite, sans tirets, les arguments. Une option, tel que je le comprends en tout cas, c'est quelque chose qui vient régler, préciser ou modifier ce que fait la commande. Les arguments sans tirets servent plutôt à indiquer ce sur quoi la commande va agir, en général un fichier ou un répertoire.
Plus tard, à ce qu'il me semble, on a introduit des commandes avec ce qu'on appelle des sous-commandes, par exemple ce
systemctl status
. Sansstatus
, ça ne veut rien dire du tout,systemctl
ne sait absolument pas ce qu'on veut qu'il fasse, d'où cette idée de « sous-commande ». C'est tout.[^] # Re: Options, arguments, sous-commandes
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Depuis très longtemps, on avait 'ps aux' ou 'ps -elf' suivant les systèmes.
[^] # Re: Options, arguments, sous-commandes
Posté par David Marec . Évalué à 2. Dernière modification le 15 juin 2019 à 12:04.
A noter que les *BSD, le tiret n'est pas déclaré optionnel dans le manuel,
- alors que la syntaxe sans le tiret est appelée «BSD» sous les linux -
même si cette syntaxe est toujours acceptée.
Il me semble que ce n'est plus le cas non plus sur les Linux les plus récents.
[^] # Re: Options, arguments, sous-commandes
Posté par Cyril Brulebois (site web personnel) . Évalué à 0.
La documentation, et surtout le comportement de
systemctl
sans paramètre, semblent contredire cette assertion.Debian Consultant @ DEBAMAX
[^] # Re: Options, arguments, sous-commandes
Posté par David Marec . Évalué à 2.
En quoi ?
En l'absence de sous-commande explicite, le programme en définit une par défaut. Cela signifie bel et bien qu'une sous-commande est requise pour faire fonctionner le programme.
COMMAND
n'est pas optionnel.# confusion
Posté par David Marec . Évalué à 2.
Quelle norme ?
Les tirets correspondent en principe à une option, un drapeau/commutateur, peut importe comment on l'appelle. Avec des variantes pour les tirets doubles.
status
est un argument de la commandesystemctl
, qui l'interprète comme une sous-commande (comme indiqué dans la page de man).Èvidemment, lorsque l'on regarde
ps
de plus près, tout ce beau principe est foutu en l'air.[^] # Re: confusion
Posté par FantastIX . Évalué à 2.
Je peux me tromper sur l'histoire de UNIX mais est-ce que ces outils, comme ps, tar et autres n'ont pas été écrits avant que soit décidé d'adopter la convention que l'on connaît aujourd'hui pour le passage d'arguments?
# plus une convention qu'un norme
Posté par eric gerbier (site web personnel) . Évalué à 1.
Une norme, c'est quelque chose de très formel : ISO, ANSI …
Pour les commandes unix, il y a un eu un gros travail de standardisation qui a amené les normes POSIX. On peut voir dans les pages de man si les commandes respectent POSIX.
Et puis il y a des machins qui ne respectent pas les convention, j'aime bien prendre pour cela la commande java : pour obtenir la version il faut taper "java -version" , et "java --version" renvoie : "Error: A fatal exception has occurred. Program will exit"
[^] # Re: plus une convention qu'un norme
Posté par FantastIX . Évalué à 2.
mplayer est un autre contre exemple.
[^] # Re: plus une convention qu'un norme
Posté par Anonyme . Évalué à 2.
On voit aussi beaucoup de programme écrit en Go ou
--
et-
sont équivalent (ils doivent sûrement partager la même bibliothèque pour parser les arguments).Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.