Comment interpréter la syntaxe «usage» de la commande bash?

11

Comment devez-vous interpréter exactement la sortie d'une sortie "utilisation" des commandes, en bash par exemple.

Par exemple, sur mon OS X, cpme donne

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
  • Qu'est-ce que les options imbriquées, comme -H dans -R, indiquent?
  • Les majuscules et minuscules ont-elles une signification?
  • Quand un argument est-il facultatif, requis?

J'ai besoin d'implémenter une ligne de commande telnet contre un de mes programmes et j'aimerais bien comprendre.

raoulsson
la source

Réponses:

15

Pour quiconque essaie de comprendre ce que signifie la sortie d'utilisation, le meilleur moyen est de le faire man man.

sérieusement :-) Prenez le temps d'apprendre les conventions, ça aide vraiment.

   The following conventions apply to the SYNOPSIS section and can be used
   as a guide in other sections.

   bold text          type exactly as shown.
   italic text        replace with appropriate argument.
   [-abc]             any or all arguments within [ ] are optional.
   -a|-b              options delimited by | cannot be used together.
   argument ...       argument is repeatable.
   [expression] ...   entire expression within [ ] is repeatable.
Justin
la source
+1 en supprimant mon message comme redondant.
Warner
man mansur CentOS 6.6 n'a pas cette section; ni la version de man mansur Mac OS X 10.7.4. Où puis-je le trouver?
Wildcard
Trouvé, il est man man-pagesdans CentOS et man manpagessur Mac OS X (qui utilise les commandes BSD).
Wildcard
Cette réponse, ainsi que la man mancommande ne semblent pas couvrir les cas où l'entrée doit être l'un des éléments d'une énumération. Par exemple<env> - must be one of [dev | test | uat | perf | prod]
Addison
2

Tout d'abord, s'il existe des conventions générales, elles ne sont pas appliquées de manière uniforme.

  • Dans ce cas, il est dit que si vous utilisez -R( ce qui indique « récursion »), alors vous pouvez utiliser -H, -Lou -P. Si vous n'utilisez pas -R, ces options ne sont pas pertinentes.
  • Oui, le cas est presque toujours important. Donc généralement -het -Hfaites des choses complètement différentes.
  • Les crochets indiquent généralement qu'une option ou un argument est "facultatif". (Les choses avec des tirets devant elles sont des "options", les mots sans tirets sont des arguments.) Sans crochets, l'option ou l'argument est généralement requis. Dans votre exemple, "fichier_source" et "répertoire_cible" sont requis. Le "..." indique que l'argument précédent peut être répété.

Autres points à noter:

  • La barre verticale indique "OU". [-fi | -n]Indique donc que vous pouvez utiliser soit -fet / ou -imais pas en combinaison avec -n.
  • Les options groupées entre parenthèses indiquent que vous pouvez utiliser n'importe laquelle d'entre elles. [-apvX]Indique donc que vous pouvez utiliser n'importe quelle combinaison de ces options. Ils n'ont même pas besoin d'être brisés ensemble. Ce -a -v -pserait donc une combinaison valide.
Insyte
la source