On Sat, Oct 08, 2011 at 07:10:18PM +0200, Arnaud wrote: > > * Merci à Félix Hauri pour son cours bash/shell, et ses conseils après > le cours, bien que j'avais espéré un cours un peu plus avancé. > Commencer avec la partie de fin aurait été un bon point de départ ;) :-)
Je comprend ta frustration, mais voilà, ``on'' m'a demandé avec insistance de rester ``léger'' afin de ne pas effrayer les nouveaux venus! ;-) Si tu veux du plus ``lourd'', tu peux jetter un oeil à http://www.f-hauri.ch/vrac/get_ubuntu.sh Il s'agit d'un bash script qui va - chercher sur ubuntu.com le nom d'un mirroir et du fichier .iso de la dernière version (lts ou latest, desktop, server ou alternate et 32 ou 64 bits, à choix). - récupère le .iso (possibilité d'interropre le transfert, reprise au point d'arrêt), - le confine sous le nom juste et corrige sa date de création, - le vérifie par sha1sum et enfin - vérifie la signature ubuntu du fichier de checksums. Le tout avec barres de progression, (possibilité de redimmensionner la fenêtre pendant le transfert), via ncurses et sans l'utilisation d'un outils de progression comme ``pv'' ou ``bar''. Mon but initial était de récupérer la dernière version sans avoir à chercher, après il y a eu des discutions à propos de ``pv'' et ``bar'', puis des demandes concernant les fifos (pipes), j'ai donc étoffé le script, essentiellement a de fins démonstatives (pour ne par dire didactiques). Pour ce qui est de la différence entre: $ cat <<eof $(do something) eof et $ cat < <( do something ) Le résultat sera à priori le même, car dans le premier cas le $() sera executé *avant* le cat, et dans le second égallement. Cependant, la syntaxe ``<<eof'' est très ancienne et l'utilisation de $() dans un ``inline document'' est peu standard (la syntaxe $() est d'ailleur nettement plus récente). Dans les fait, il s'agit d'un ``inline document'' dont une partie est constituée d'une pseudo-varianble qui est en fait le résultat d'un fork. A contrario, la seconde syntaxe implique un (seul et unique) fork dont le résultat sera transmit en entrée de la commande cat. En fait, on peut écrire: $ cat << eof $(do something) $(do something else) eof Ce qui générera deux forks successifs... A priori une erreur, sauf situation particulière, ceci n'est pas possible avec la syntaxe '< <()' Je dois reconnaitre que la nuance n'est pas évidente, elle reste pourtant importante. En pratique, il y a toujours plusieurs moyens d'arriver à un résultat, dans les fait, certains seront plus rationnels et/ou plus efficaces que d'autres... -- Félix Hauri - <[email protected]> - http://www.f-hauri.ch _______________________________________________ gull mailing list [email protected] http://forum.linux-gull.ch/mailman/listinfo/gull
