Path: ...!news.mixmin.net!aioe.org!K7PIs9tCGQ+WHJa7e6BylQ.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin Newsgroups: fr.comp.os.unix Subject: Re: =?utf-8?Q?r=C3=A8gle?= pour =?utf-8?Q?=C3=A9crire?= les "usage: ..." Date: Sat, 09 Jul 2022 23:21:18 +0200 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <87a69ix9rl.fsf@universite-de-strasbourg.fr.invalid> References: <62c8c4eb$0$24781$426a74cc@news.free.fr> <62c98a7b$0$18716$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="43438"; posting-host="K7PIs9tCGQ+WHJa7e6BylQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cancel-Lock: sha1:VffyYzDImygoXUhHRyHAzEEPdh8= X-Notice: Filtered by postfilter v. 0.9.2 Bytes: 5501 Lines: 116 Thomas writes: > In article , ST wrote: > >> On 2022-07-08, Thomas wrote: >> > bonjour :-) >> > >> > >> > est-ce qu'on peut trouver qqpart une r=C3=A8gle pour =C3=A9crire les "= usage: ..." ? >> > >> > par ex, je sais que [] indique qqch de facultatif, mais il y a plein=20 >> > d'autres choses que je ne connais pas / pas bien. Pour ma part, je comprendrais tout de suite [], | (avec ou sans parenth=C3=A8ses autour si c'est simple), et ... pour la r=C3=A9p=C3=A9titi= on. Je ne crois pas qu'il y ait vraiment un standard. C'est essentiellement un notation pour des expressions r=C3=A9guli=C3=A8res, avec ... qui est plu= s utile que * (ce serait + pour les expressions r=C3=A9guli=C3=A8res, mais ce n'est= pas une construction primitive). Mais c'est rare qu'on ait besoin de toute la puissance des expression r=C3=A9guli=C3=A8res pour des arguments, donc les notations sont plus "intuitives". >> > par ex, si j'=C3=A9cris : >> > >> > usage: rapid [-v] (gui_file | -ni [-od dir] gui_file...) >> > >> > est-ce que tout le monde comprend, sans ambiguit=C3=A9 ? >> > >>=20 >> "-v" est optionnel >>=20 >> Le "|" marque est un choix entre ce qui est =C3=A0 gauche et ce qui est = =C3=A0 >> droite, dans lequel "-od dir" est optionnel. > > je me posais des questions notamment sur : > - () que je ne me rappelle pas avoir vu (j'ai utilis=C3=A9 =C3=A7a comme = le=20 > symbole math=C3=A9matique) Personnellement je pr=C3=A9f=C3=A8re =C3=A9viter |, ce qui =C3=A9vite aussi= les parenth=C3=A8ses en g=C3=A9n=C3=A9ral. Par exemple, chez moi la page de man de sort indique sort [OPTION]... [FILE]... sort [OPTION]... --files0-from=3DF (note le retour de l'=C3=A9toile, sous la forme [x]...) > - ... que j'ai d=C3=A9j=C3=A0 vu, mais =C3=A7a me donne une sensation de = non-rigoureux=20 > (donc je posais la question en m=C3=AAme temps, =C3=A7a coute rien ...) Je pense qu'il y a un peu de folklore l=C3=A0-dessous : les grammaires des langages de programmation sont souvent d=C3=A9crites dans le formalisme BNF (Backus Naur Form -- ou EBNF quand c'est "extended"), c'est-=C3=A0-dire avec des expressions r=C3=A9guli=C3=A8res en partie droite. C'est donc souvent *= tr=C3=A8s* rigoureux. J'ai le souvenir de manuels SQL qui utilisaient massivement ... (peut =C3=AAtre parce que c'est "visuel"). L'usage dans les synposis de commandes est s=C3=BBrement plus ancien, cela dit. > - je crois qu'on utilise qqfois {}, mais je ne me rappelle plus ce que=20 > =C3=A7a veut dire. R=C3=A9p=C3=A9tition un nombre explicite (ou un intervalle de nombres) : FI= LE{3,7} signifierait "entre 3 et 7 fichiers". C'est comme =C3=A7a que je le comprendrais, mais je ne crois pas l'avoir jamais vu utilis=C3=A9 pour des arguments de commandes. > en passant, je viens de m'apercevoir qu'avant on avait : > > $ ls -z > ls: illegal option -- z > usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...] Encore une notation diff=C3=A9rente : ici [] signifie aussi bien "optionnel" que "n'importe lesquels des caract=C3=A8res de la liste" ; dans le second c= as, le "-" doit =C3=AAtre en t=C3=AAte. Cela ne correspond =C3=A0 aucune notati= on formelle connue, mais je pense que tout le monde comprend. Bref, c'est la jungle, mais [], |, et ... sont usuels pour des arguments de commande. > et maintenant : > > $ ls -z > ls=C2=A0: option invalide -- 'z' > Saisissez =C2=AB=C2=A0ls --help=C2=A0=C2=BB pour plus d'informations. > $ mkdir -a > mkdir=C2=A0: option invalide -- 'a' > Saisissez =C2=AB=C2=A0mkdir --help=C2=A0=C2=BB pour plus d'informations. > > est-ce que le "usage: ..." serais tomb=C3=A9 en d=C3=A9su=C3=A9tude ? Si l'ordre des options est sans importance, il vaut peut-=C3=AAtre mieux en donner une liste lin=C3=A9aire, comme le fait en g=C3=A9n=C3=A9ral --help (= ou le man). Un synopsis "mkdir [-m mode] [-p]" aurait l'air d'imposer l'ordre. Pour "ls" il y a tellement d'options (avec certaines uniquement sous forme longue) qu'un synopsis n'a plus grand sens de toute fa=C3=A7on. La seule question que je me pose en voyant le "usage" ci-dessus est : pourquoi pas -j ou -z ? Mais le chance que j'y trouve l'option que je cherche est =C3=A0 peu pr=C3=A8s nulle. -- Alain.