Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 05-01-2014 13:21:19

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

shutdown remet-elle en cause le man ?

En relisant notre discussion sur la commande shutdown, j'ai relevé une contradiction que j'espère être due à mon ignorance entre le synpsis de la commande shutdown, et les conventions de man man.

On a constaté en effet à l’exercice :

shutdown now


pour lancer l'extinction immédiatement
comme le rappelle paskal # 31

ou avec une option, par exemple :

shutdown -t5 -r now


pour rebooter immédiatement
comme le fait paskal # 34

ou

shutdown -t 10 now


qui « Signifie : envoyer l'alerte de redémarrage maintenant et rebooter dans 10 secondes. », comme nous l'a appris captnfab # 35.

En effet pour un debianeux-débutant-et-curieux, tout cela est déroutant car

1) le synopsis est :

/sbin/shutdown [-akrhPHfFnc] [-t sec] heure [message-avertissement]


comme captnfab l'a rappelé # 35

2) les conventions sont :


  texte gras            à taper exactement comme indiqué ;
  texte italique      à remplacer par l'argument approprié ;
  [-abc]                 tous les arguments entre [ ] sont facultatifs ;
  -a|-b                   les options séparées par | ne peuvent pas être  utilisées simultanément ;
       argument ...            argument peut être répété ;
       [expression] ...       toute  l'expression située à l'intérieur de [ ] peut
 être répétée.
 



>Pour ce qui concerne la première ligne "des conventions" :

S'il faut taper exactement ce qu'il y a en gras selon la convention, comment alors est-il possible qu'en pratique la commande marche sans /sbin/ avant shutdown ???



3) d'autre part en reprenant le synopsis et les conventions plus haut devant cela :

[-akrhPHfFnc] [-t sec]



> alors comment fait-on pour associer les options de chaque [ ] quand en général on trouve dans un synopsis deux [ ]  ?

Certes le wiki apprend qu'on peut regrouper ainsi -arh ou -aH ou même -arkrhPHfFnc.
Mais sur la question de savoir ce qu'il faut faire en général quand il y a plusieurs [ ] séparés,

rien n'est dit sur la syntaxe qui permet d'additionner ce qu'il y a dans l'un et l'autre des deux [ ]. Ni même si cette addition est systématiquement autorisée quand on trouve deux crochets.
 
A l'intuition comme cela, on peut se dire que cette syntaxe est :
un espace entre la première option et la deuxième, cette dernière devant avoir elle aussi un tiret comme la première ?

Intuition qui risque d'égarer plus d'un utilisateur !

Merci et excusez-moi si cette obsession de la syntaxe du code est pénible.

Dernière modification par Hypathie (05-01-2014 13:25:22)

Hors ligne

#2 05-01-2014 14:41:44

MicP
Invité

Re : shutdown remet-elle en cause le man ?

Hypathie a écrit :

... la commande marche sans "/sbin/" avant "shutdown" ...


C'est quand le chemin "/sbin/" est dans la variable d'environnement "PATH"

echo $PATH


cat /etc/profile



============

[-akrhPHfFnc] [-t sec]


La première liste d'options ne nécessite pas de paramètre.
Plusieurs options peuvent donc êtres regroupées dans un seul "mot" qui sera introduit par un seul tiret.
Le programme qui reçoit le "mot" (groupement d'options) va décomposer ce mot en fonction des paramètres qu'il reconnaît.

La seconde "liste d'option" n'est en fait qu'une seule option qui est "réglable" par un paramètre ("sec" pour seconde) qui doit donc être spécifié.
Du fait que cette option est paramétrable, Il n'est pas possible de la grouper avec les autres options du programme.

==========
Avant que le programme demandé (shutdown, cat, ls, ...) puisse être exécuté, l'interpréteur de commande lit la ligne de commande pour ...l'interpréter.

L'interpréteur de commande (bash, sh...) commence par rechercher les caractères de séparation qu'il appelle aussi "un blanc" (espace tabulation).
il fait donc un tableau (une liste des éléments "séparés")

Dans cette liste, il regarde si le premier élément existe en tant que commande interne du noyau.
Sinon, il recherche dans le PATH, si un nom de fichier exécutable corresponds à l'élément qu'il recherche.
s'il ne trouve rien qui correspod => "command not found". et il s'arrête là.

Ensuite il lance la commande en lui refilant le reste de la liste qu'il avait fait avec la ligne de commande.

Le programme va se débrouiller avec cette liste pour en extraire les options et paramètres qu'il reconnaîtra (ou pas) et qu'il acceptera (ou pas).

man bash


============
Liens debian:

debian-reference

La variable $PATH

===========
Autres liens :

Version originale (qui me fait mal aux yeux)
http://www.grymoire.com/unix/Sh.html#uh-18

http://www.grymoire.com/unix

Ma copie (dont j'ai seulement adapté les fichiers ".css" pour mes "beaux" smile yeux)
http://mpailhe.free.fr/www.grymoire.com … html#uh-18

http://mpailhe.free.fr/www.grymoire.com/Unix.1.html

Dernière modification par MicP (08-01-2014 19:24:16)

#3 05-01-2014 15:32:47

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : shutdown remet-elle en cause le man ?

Hypathie a écrit :

shutdown -t 10 now


qui « Signifie : envoyer l'alerte de redémarrage maintenant et rebooter dans 10 secondes. », comme nous l'a appris captnfab # 35.


En fait, « redémarrer maintenant mais laisser 10 secondes aux applications pour se fermer. »

Hypathie a écrit :

S'il faut taper exactement ce qu'il y a en gras selon la convention, comment alors est-il possible qu'en pratique la commande marche sans /sbin/ avant shutdown ???



Je t'invite à taper

echo $PATH


Pour tous les programmes qui sont dans l'un des dossiers listés par cette commande, il n'est pas besoin de taper le chemin complet.

Tu peux faire un test avec x-terminal-emulator, qui est dans /usr/bin/x-terminal-emulator, mais que tu peux lancer sans préciser /usr/bin vu que /usr/bin est dans $PATH


Hypathie a écrit :

[-akrhPHfFnc] [-t sec]



C'est une abréviation pour [-a] [-k] [-r] [-h] … [-t sec] etc. utilisée quand les programmes acceptent le raccourci « -a -r » = « -ar » et que les options sont simples (sans second paramètre).


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#4 05-01-2014 15:37:54

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : shutdown remet-elle en cause le man ?

Pour ceux qui veulent s'amuser à déchiffrer un man, je vous invite à consulter « man ip » du paquet iproute2. Pour info, ip est la commande remplaçant ifconfig.

C'est aussi un des programmes dont le système d'option est le plus compliqué, après mplayer bien sûr big_smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#5 05-01-2014 16:32:32

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : shutdown remet-elle en cause le man ?

MicP a écrit

La seconde "liste d'option" n'est en fait qu'une seule option qui est "réglable" par un paramètre ("sec" pour seconde) qui doit donc être spécifié.
Du fait que cette option est paramétrable, Il n'est pas possible de la grouper avec les autres options du programme.



Dis-moi si j'ai bien compris, cela veut bien dire en pratique, que si on entre cela dans son terminal :

 en root
shutdown -rt sec heure



la réponse sera un message d'erreur.

Par contre il est possible d'écrire :

shutdown  -r -t sec heure



ou encore

de mettre à la place de l'option r
n'importe quelle option du groupe [-akrhPHfFnc]



Est-ce juste alors de résumer ainsi :

s'il y a deux groupes de [ ] c'est que le deuxième concerne des options paramétrables,
alors la syntaxe est bien indiquée par le synopsis : il suffit de le suivre
Il faut un espace entre l'option facultative et l'option paramétrable et un tiret accolé à cette dernière,
un autre espace et son paramètre.
Sans oublier bien évidemment ce que le synopsis indique en gras et qui est obligatoire.



Merci à vous, comme cela ça devient facile ! big_smile

Hors ligne

#6 05-01-2014 16:43:11

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : shutdown remet-elle en cause le man ?

Je pense que les pages man ne sont pas assez rigoureuses pour être interprétées aussi mécaniquement. Elles n'utilisent pas toutes *exactement* le même formalisme, et ne décrivent pas nécessairement tous les agencements possibles de paramètres.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#7 05-01-2014 17:19:31

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : shutdown remet-elle en cause le man ?

sad

Hors ligne

#8 05-01-2014 17:23:11

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : shutdown remet-elle en cause le man ?

captnfab

tu parles du dernier paragraphe, seulement ? roll

Hors ligne

#9 05-01-2014 17:49:09

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : shutdown remet-elle en cause le man ?

Le man te permet de déduire une syntaxe qui marche tout le temps, mais ne te permet pas forcément de déduire toutes les syntaxes qui marchent.

S'il y a deux groupes de [], le second ne concerne pas nécessairement des options paramétrables. Mais comme [ -abcd] est un raccourci pour [-a] [-b] [-c] [-d] il ne permet pas d'exprimer les options paramétrables, donc il faut les donner séparément.

[ -a | -b | -c ] signifie que les trois options sont valides mais excluent les deux autres.

Parfois la syntaxe est ambigue, comme pour « [ -c | --config fichier ] » dans ce cas, le man indique que « -c » = « --config » (c'est ce que l'on appelle les options courtes et les options longues), mais les deux ont besoin du paramètre « fichier ». Normalement cette ambiguité n'est présente que dans le cas des options courtes/options longues.

Alors que dans d'autres cas on trouvera « [ -a fichier | -b interface ] » auquel cas interface n'est un paramètre que pour -b et fichier que pour -a.


Les espaces sont toujours autorisés pour séparer les arguments.

commande [-abc] acceptera commande -a -b et en général commande -ab.

Pour le cas des options à paramètre, il faut voir. Il est toujours légal de donner l'option avec un espace : commande -a -t plop, mais pas toujours de les accoler : commande -at plop.

Un exemple où cela est possible est avec tar. Tar prend tes options qu'il n'est pas nécessaire de préfixer par - à condition de les accoler.

tar xf fichier = extraire (x) le fichier (f) fichier. Tu peux regarder le man de tar pour voir comment c'est présenté.

Cela dit, ce sont des cas assez tarabiscotés. Plutôt que d'expliciter une interprétation valable pour toutes les expression rencontrées dans le man, il semble plus raisonnable d'expliciter une interprétation pour chaque type d'expressions. (Une pour les options courtes/longues, une pour les [ -abcd ] (aussi appelés flags), une pour les utilisations exclusives ( | ), …

PS: ne prends pas peur, mon message est un peu bordélique car énumératif, mais en vrai il y a un peu de structure là derrière, tu peux y arriver smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#10 05-01-2014 19:46:05

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : shutdown remet-elle en cause le man ?

merci smile

Hors ligne

Pied de page des forums