Les scripts shell peuvent être terriblement efficacement même à comparer avec n'importe quel langage dynamique comme python, perl ou ruby.
Ce matin j'ai pour mes besoins écris un petit script qui nettoie de manière très simple mon dépôt maven local (il commençait à devenir un peu trop gros).
Oui c'est du bash, mais je crois qu'on peut le convertir en bourne shell assez facilement (on redirige les find vers un fichier, pour le gestion des processus je sais pas).
On notera que les find sont lancé en parallèle de du, ce qui à mon humble avis permet d'utiliser le(s) cache(s) du système de fichier. Les suppressions de fichiers aussi. Ça donne un exemple de manière simple de paralléliser. L'usage du pipe en est un autre. Pour l'exemple donné un la boucle aurait aussi pu être parallélisée avec COPROC, ce qui aurait permis de définir le nombre de processus à lancer en parallèle. Un version zsh peut être encore plus courte avec les globbing étendu (bash les a aussi mais je ne sais pas s'il a la possibilité de définir le type de fichier comme en bash : **/*(.)).
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Faut être punni...
Posté par barmic . En réponse au journal 100 scripts shell UNIX. Évalué à 3.
Les scripts shell peuvent être terriblement efficacement même à comparer avec n'importe quel langage dynamique comme python, perl ou ruby.
Ce matin j'ai pour mes besoins écris un petit script qui nettoie de manière très simple mon dépôt maven local (il commençait à devenir un peu trop gros).
Oui c'est du bash, mais je crois qu'on peut le convertir en bourne shell assez facilement (on redirige les find vers un fichier, pour le gestion des processus je sais pas).
On notera que les find sont lancé en parallèle de du, ce qui à mon humble avis permet d'utiliser le(s) cache(s) du système de fichier. Les suppressions de fichiers aussi. Ça donne un exemple de manière simple de paralléliser. L'usage du pipe en est un autre. Pour l'exemple donné un la boucle aurait aussi pu être parallélisée avec COPROC, ce qui aurait permis de définir le nombre de processus à lancer en parallèle. Un version zsh peut être encore plus courte avec les globbing étendu (bash les a aussi mais je ne sais pas s'il a la possibilité de définir le type de fichier comme en bash :
**/*(.)).Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)