Citation
Frédéric BrugmansLa solution SHELL
echo ${liste:0:1} # index 0, longueur 1
Toujours d'une élégante simplicité. Faudra vraiment que je me mette à apprendre le bash. Le pb c'est que j'arrive toujours à tout faire en pur Bourne et que je ne tente jamais d'optimiser en bash...
Citation
Oudoubah
ce qu'a écrit sve@r est très basique
Totalement. Cela est la base de la programmation shell ou le grand principe est de dire "je délègue ce que je ne sais pas faire à un programme qui sait le faire et je récupère le résultat"
Citation
Oudoubah
Je te conseille d'ailleurs son cours pour apprendre un peu plus comment fonctionne le shell.
];-)
Citation
Basile STARYNKEVITCH
Parce qu'en soi, le shell n'existe pas, il s'appuie sur les nombreux programmes usuels (ou normalisés) dans /bin /sbin ou /usr/bin.
Ben non. Il existe mais son code est réduit au minimum. Des variables, des structures et c'est tout...
PLUS son plus grand atout: la possibilité de déléguer aux autres programmes Unix
TOUT ce qu'il ne sait pa faire par lui-même. Et je dis "Programme Unix" par généricité car rien ne t'empêche de créer ton propre programme en n'importe quel langage (C, C++ ou autre) qui sera lui-aussi utilisable par un shell. Seule contrainte: Afficher les sorties à l'écran. Ensuite le shell se chargera de récupérer cet affichage par les backquottes. Au détriment d'un fork, certes, mais les systèmes sont aussi un petit peu là pour bosser à notre place...
Citation
Oudoubah
Par définition, un langage de script est lent
Ca dépend de quel langage. J'ai eu un truc à faire en juin. Il s'agissait de transformer un fichier texte tabulé en XML et chaque ligne du fichier texte générait une quarantaine de ligne XML. Le fichier étant assez conséquent (50000 lignes), mon script le traitait en 1h30.
Ayant appris Python, je me suis mit dans l'idée de faire le même truc en Python. Une fois fait, mon script Python traitait le tout en 37 secondes !!!
Je présume que l'écart exponentiel tient dans la bufférisation des IO mais il n'empêche que Python est quand-même un langage de script...
Citation
Basile STARYNKEVITCH
Tu exagères un peu à me taquiner ainsi. J'ai intensivement pratiqué le shell il y a longtemps, mais depuis ça m'a passé, je fais du shell à dose homéopathique.
Sans déconner ? Moi je m'éclate à faire des trucs complètement fou en shell. Il y a quelque temps, je me suis même
amusé à coder la division telle qu'on l'apprend au primaire. Je pose le diviseur, je calcule le quotient et le reste puis je descend le chiffre suivant etc. Le code assez long il est vrai mais totalement fonctionnel se trouve dans le cours dont parle Oudoubah.
Citation
Basile STARYNKEVITCH
Le shell ne fournit pas des structures de données ni des mécanisme de modulatités intéressants (autre que les chaines et les tableaux de chaines pour les données, et les scripts et fonctions pour la modularité)
Faut se replacer dans le contexte. Le shell n'est pas là pour faire de l'objet ou de l'évènementiel. Son but reste encore et toujours fournir un langage simple permettant d'automatiser les traitement d'administration de fichiers texte ou de log (car dans les Unixoides, tous les fichiers de config et/ou de log sont des fichiers texte). Et il n'a pas besoin de fournir tout ce que tu lui demandes puisqu'il peut le prendre là où ça se trouve. Le shell est probablement le langage du fainéant et c'est pour ça que je le trouve si extra...
Bon, je veux bien qu'on néglige le MsDOS qui ne sait absolument rien faire mais on ne peut pas négliger le shell sous prétexte que ceci ou que cela. Ca reste quand-même la base du programmeur Unix et son tout premier outil de communication avec le système et il présente, comme je l'ai dit, une puissante simplicité de programmation inégalée.
J'aurais pu aussi écrire ma commande en C++ mais je trouve que cela aurait été un trop gros investissement pour le résultat à obtenir.
Je ne dis pas non plus qu'il ne faut pas le faire en Ruby malheureusement je ne connais pas ce langage. J'aimerais aussi m'intéresser au zsh qui, à te lire, semble extra mais comme d'hab j'ai pas non plus le temps de m'y investir.
Mais comme le dit Brugmans, ce serait bien, la prochaine fois que tu as une solution dans un langage alternatif, de nous la proposer afin que ceux qui ne connaissent pas ce langage puissent comparer et, à la limite, leur donner envie de l'apprendre...
L'homme qui murmurait à l'oreille des pingouins
[
fr.lang.free.fr]