Le Monday 04 April 2011 01:07:09 Paul Marques Mota, vous avez écrit : > Le 4 avril 2011 00:51, Alain Vaugham <al...@vaugham.com> a écrit : > > Bonsoir la liste, > > Bonsoir > > > Je cherche à apprendre comment s'articulent les enchaînements de > > plusieures commandes quand on les aligne sur une seule ligne à travers > > des tubes et comment on passe les résultats d'un tube à l'autre. > > Tu devrait poster le script shell en question ici, ce sera plus simple > pour te l'expliquer >
La commande marche. Je ne comprend pas pourquoi. ===================== $ grep domain /etc/services $ cat /etc/services | grep domain Ces deux formes différentes donnent un résultat identique. ===================== Le man de grep dit que grep recherche le motif dans le fichier qui suit la commande. Donc je comprend bien cette structure car elle est conforme au man : (commande + motif + fichier) $ grep domain /etc/services Que je lis cela donne : grep cherche le motif dans le fichier dont le nom est fourni juste **après** le motif. Jusque là je pense que ça va. C'est la suite qui me perturbe. Je ne comprend plus la syntaxe "cat /etc/services | grep domain" alors que je l'utilise tous les jours avec succès pour extraire toutes les lignes qui contiennent le mot "domain" du fichier /etc/services. (concatène les fichiers et les affiche sur la sortie standard que le pipe fourni à l'entrée standard destinée à la commande grep pour extraire le motif) : $ cat /etc/services | grep domain Bien qu'elle fonctionne, cette syntaxe commence à me perturber car le man de grep dit que si le fichier est absent - et c'est strictement le cas ici - alors grep recherche le motif sur l'entrée standard. Seulement, l'entrée standard est décrite **avant** la commande grep et non pas **après** car elle vient de la sortie de cat. Si j'applique strictement le manuel de grep alors la syntaxe aurait dû être : (commande + motif + fichier ou entrée standard à fournir ici juste **après** le motif) C'est à dire : $ grep domain [quelque chose ici] cat /etc/services (pris comme entrée standard) Si le [quelque chose ici] est un | ou un < cela n'affiche bien sûr pas la sélection souhaitée mais c'est conforme à la structure requise par le man de grep qui est : commande + motif à chercher dans "ce qui est **après**". Dans ce cas, c'est le "ce qui est **après**" qui ne va pas. Pour que ça marche il faut renier le man et le "ce qui doit être mis **après**", doit être mis en avant... Donc j'ai un doute profond sur ma compréhension du passage de commandes quand je les aligne sur une seule ligne à travers des tubes ou des redirections et que je passe leur résultats vers la commande suivante. En bref : je ne comprend plus rien depuis que j'ai lu les manuels de grep et de cat pour comprendre ce que j'appliquais les yeux fermés depuis plusieures années avec succès ;) > > ... et je ne sais pas comment formuler cette demande à notre soi-disant > > ami commun. > > Il faut taper "manuel bash", puis aller lire la section redirection de > > http://manpagesfr.free.fr/man/man1/bash.1.html > http://www.gnu.org/software/bash/manual/bashref.html Effectivement avec "manuel bash" cela cerne beaucoup mieux le genre de lectures que j'ai besoin en ce moment. Merci Paul. -- Alain Vaugham Clef GPG : 0xD26D18BC _________________________________ Linux mailing list Linux@lists.parinux.org http://lists.parinux.org/mailman/listinfo/linux