GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre un tiret et deux tirets pour les paramètres d'invite de commande ?

Il n'y a pas de norme généralisée. Il y a une certaine cohérence, par ex. dans les programmes GNU, mais vous devez vérifier la documentation de chaque programme.

Citant Wikipédia, c'est moi qui souligne :

Dans les systèmes de type Unix, le trait d'union ASCII moins est couramment utilisé pour spécifier des options. Le caractère est généralement suivi d'une ou plusieurs lettres . Un argument qui est un simple trait d'union moins sans aucune lettre spécifie 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 caractères tiret–moins ( -- ) sont utilisés sur certains programmes pour spécifier des "options longues" là où des noms d'options plus descriptifs sont utilisés . C'est une caractéristique courante des logiciels GNU.

Habituellement, les traits d'union indiquent un argument prédéfini. Je pense qu'il est utilisé pour les différencier de par ex. les noms de fichiers ou d'autres étiquettes que vous pourriez utiliser comme arguments. Ce n'est pas toujours le cas, cependant (voir ci-dessous).

Vous trouverez souvent le même argument disponible à la fois comme option courte et longue, comme par ex. en ls.

Certains programmes utilisent un seul trait d'union pour les options à un caractère et deux traits d'union pour les options à plusieurs caractères, mais pas tous (GNU find vient à l'esprit). Certains programmes ont des traits d'union facultatifs ou les ignorent complètement (tar ou BSD ps me viennent à l'esprit).

Options parfois longues (--foo ) nécessitent des arguments, tandis que les options courtes (-f ) ne le font pas (ou impliquent au moins un argument par défaut spécifique).

Options courtes (par exemple cut -d ' ' ) peut avoir des arguments , tandis que des options longues (par exemple ls --all ) ne les ont pas nécessairement.

Pour définir un comportement particulier d'un programme, vous devez parfois utiliser une option courte, pour d'autres, vous devez utiliser une option longue, et pour certains, vous avez le choix.

Sur une note connexe, certains programmes ne peuvent gérer aucun espace entre une option et son argument, tandis que d'autres ne le peuvent pas.

Comme je l'ai écrit au début, il n'y a tout simplement pas de comportement ou de norme commun. Souvent, vous pouvez retracer un comportement similaire à la même bibliothèque utilisée pour l'analyse des arguments, mais vous ne voudrez probablement pas lire les sources pour le découvrir.

Vous ne pouvez vraiment pas déduire la syntaxe des arguments d'un programme à partir d'un autre.

Si vous considérez également Windows, c'est encore pire :alors que les appels de ligne de commande Windows utilisent traditionnellement /f (au moins la plupart du temps, des caractères simples) pour les options, avec : comme séparateur entre les options et leur valeur (voir par exemple ici); Les utilitaires multiplateformes sont répandus (comme ceux que vous mentionnez) et apportent la syntaxe de trait d'union la plus courante pour les arguments, avec toutes les incohérences mentionnées ci-dessus.


Faites simplement ls --help et regardez les options; cela devrait être évident pour vous.

Cela n'a rien à voir avec les paramètres. De nombreuses options ont une forme courte et une forme longue, et beaucoup ont l'une et pas l'autre.

Et aussi, en ce qui concerne les paramètres, c'est simplement que dans la forme longue quand ils prennent un paramètre, on dirait qu'il est toujours avec un égal. Mais évidemment, les courts peuvent tout autant prendre des paramètres; juste qu'ils n'utilisent pas d'égal.

Voici un extrait de ls --help (man ls donne des informations équivalentes). Remarquez comment certains ont une forme longue sans forme courte (--author , --block-size ), certains ont une forme courte sans forme longue (-c , -f , -g ), et certains ont à la fois une forme longue et une forme courte (-A /--almost-all , -b /--escape ).

 -a, --all                  do not ignore entries starting with .
 -A, --almost-all           do not list implied . and ..
     --author               with -l, print the author of each file
 -b, --escape               print octal escapes for nongraphic characters
     --block-size=SIZE      use SIZE-byte blocks
 -B, --ignore-backups       do not list implied entries ending with ~
 -c                         with -lt: sort by, and show, ctime (time of last
                              modification of file status information)
                              with -l: show ctime and sort by name
                              otherwise: sort by ctime
 -C                         list entries by columns
     --color[=WHEN]         control whether color is used to distinguish file
                              types.  WHEN may be `never', `always', or `auto'

C'est une convention provenant de *nix. Un double trait d'union précède les options lorsqu'elles sont écrites en toutes lettres , , tandis qu'un trait d'union simple précède les options lorsqu'elles sont écrites sous forme abrégée . Par exemple ls --all --l , peut être raccourci en ls -al . Comme on le voit, toutes les options n'ont pas leurs équivalents en une seule lettre, bien que les plus utilisées en aient généralement.

Que l'option prenne un argument ne fait pas vraiment de différence - elle peut soit les prendre, soit ne pas les prendre, quelle que soit la manière dont vous saisissez l'option.

Lorsque vous les écrivez pour une utilisation unique, cela n'a pas vraiment d'importance, mais lorsque vous écrivez des commandes, par exemple dans des fichiers .alias, il est habituel d'utiliser la forme complète. Purement pour la facilité de lecture pour la prochaine personne.


Linux
  1. Quelle est la différence entre la commande locate et find sous Linux

  2. Quelle est la différence entre strtok_r et strtok_s en C ?

  3. Quelle est la différence entre fsck et e2fsck ?

  4. Quelle est la différence entre &> et >&en bash ?

  5. Quelle est la différence entre ls et l ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre le chat et la commande tactile

Quelle est la différence entre la commande apt et apt-get ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre les commandes kill et killall ?