Forum Linux.débutant Quelque question sur linux

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-4
28
mar.
2014

Bonjour à tous,

Je débute sous linux et j'aurais quelque questions à vous poser.

voici les questions :

je dois faire un script qui doit afficher les fichiers et répertoires du dossier passé en paramètre dans l'ordre décroissant en nombre de caractère.
Exemple :

    $ ./script.sh /bin
    plymouth-upstart-bridge
    running-in-container
    dbus-cleanup-sockets
    ntfsdump_logfile
    ntfs-3g.secaudit
    ulockmgr_server
    ntfs-3g.usermap
    vmmouse_detect

Comment pourrais-je le faire ?

Et pour les autres questions :

Le fichier d'entrée est le fichier exo1.xml.
le fichier se présente comme ceci :

<bot version="0.1.4a" formulationsCount="3566">
  <matchingGroups>
    <group externalId="ad52edb4-02da-42b7-b8c4-4688035421f4" language="French">
      <name>1er match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations/>
    </group>
    <group externalId="04667e81-a6c1-48b6-bf9b-eb9aef500cbc" language="French">
      <name>2e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations/>
    </group>
    <group externalId="e9236f85-d239-440b-9e79-ed7cbc9f0fef" language="French">
      <name>3e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="1000P"/>
        <formulation sentence="LP10PSMSB/EN"/>
        <formulation sentence="1000P"/>
      </formulations>
    </group>
    <group externalId="a574ebb0-6a7a-46a5-8f11-47ab82a59452" language="French">
      <name>4e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="1000W"/>
        <formulation sentence="LP10WSLSB/EN"/>
        <formulation sentence="1000W"/>
      </formulations>
    </group>
    <group externalId="dbd532c3-7ca8-418b-84c8-feba9aa2fc29" language="French">
      <name>5e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="230MXN"/>
        <formulation sentence="LH23PTTMBC/EN"/>
        <formulation sentence="230MXN"/>
      </formulations>
    </group>
    <group externalId="b97d17ad-c874-4e9a-bdf7-4befea339ef3" language="French">
      <name>6e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="230MXN"/>
        <formulation sentence="LH23PTSMBC/EN"/>
        <formulation sentence="230MXN"/>
      </formulations>
    </group>
    <group externalId="c26f4a02-ed31-44a5-ba00-7e306a91fbef" language="French">
      <name>7e match</name>
      <canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="230TSN"/>
        <formulation sentence="LH23PTVMBC/EN"/>
        <formulation sentence="230TSN"/>
      </formulations>
    </group>
    <group externalId="3feceacf-a080-4080-b177-19960aad342a" language="French">
      <name>8e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="230TSN"/>
        <formulation sentence="LH23PTRMBC/EN"/>
        <formulation sentence="230TSN"/>
      </formulations>
    </group>
    <group externalId="303fe41a-5512-43f4-87b1-c020dd066e65" language="French">
      <name>9e match</name>
      <canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="2433BW"/>
        <formulation sentence="LS24CMKKFV/EN"/>
        <formulation sentence="2433BW"/>
      </formulations>
    </group>
    <group externalId="78d4478b-5051-4f44-9d99-5216568452b1" language="French">
      <name>10e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="320MX-3"/>
        <formulation sentence="LH32HBPLBC/EN"/>
        <formulation sentence="32&apos;&apos; Moniteur LCD 320MX-3 usage standard"/>
      </formulations>
    </group>
    <group externalId="857d2450-f380-4693-b1b8-c0180bb9c82f" language="French">
      <name>11e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="320MXN-3"/>
        <formulation sentence="LH32HBTLBC/EN"/>
        <formulation sentence="32&apos;&apos; Moniteur LCD  320MXn-3 PC embarqué"/>
      </formulations>
    </group>
    <group externalId="1bff58a5-88e6-4be7-9649-051b245acf2d" language="French">
      <name>12e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="320MXN-3"/>
        <formulation sentence="LH32HBSLBC/EN"/>
        <formulation sentence="32&apos;&apos; Moniteur LCD 320MXn-3 PC embarqué"/>
      </formulations>
    </group>
    <group externalId="ebce9c65-c3f4-415a-bd9c-3753017d40e4" language="French">
      <name>13e match</name>
      <canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="320TSN-3"/>
        <formulation sentence="LH32CRSMBC/EN"/>
        <formulation sentence="320TSN-3"/>
      </formulations>
    </group>
    <group externalId="ba45aba9-4947-4a11-be27-7832a81093e5" language="French">
      <name>14e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="320TSN-3"/>
        <formulation sentence="LH32CRTMBC/EN"/>
        <formulation sentence="320TSN-3"/>
      </formulations>
    </group>
    <group externalId="6417ce7d-b1ac-4773-85bc-9d60f2d22d05" language="French">
      <name>15e match</name>
      <canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
      <formulations>
        <formulation sentence="400CXN"/>
        <formulation sentence="LH40MGTLGD/EN"/>
        <formulation sentence="400CXN"/>
      </formulations>
    </group>
  </matchingGroups>
</bot>

Le script doit fournir le fichier exo1.csv en sortie, si possible en un minimum de ligne

le fichier de sortie se présente comme ceci :

ad52edb4-02da-42b7-b8c4-4688035421f4    1er match
04667e81-a6c1-48b6-bf9b-eb9aef500cbc    2e match
e9236f85-d239-440b-9e79-ed7cbc9f0fef    3e match
a574ebb0-6a7a-46a5-8f11-47ab82a59452    4e match
dbd532c3-7ca8-418b-84c8-feba9aa2fc29    5e match
b97d17ad-c874-4e9a-bdf7-4befea339ef3    6e match
c26f4a02-ed31-44a5-ba00-7e306a91fbef    7e match
3feceacf-a080-4080-b177-19960aad342a    8e match
303fe41a-5512-43f4-87b1-c020dd066e65    9e match
78d4478b-5051-4f44-9d99-5216568452b1    10e match
857d2450-f380-4693-b1b8-c0180bb9c82f    11e match
1bff58a5-88e6-4be7-9649-051b245acf2d    12e match
ebce9c65-c3f4-415a-bd9c-3753017d40e4    13e match
ba45aba9-4947-4a11-be27-7832a81093e5    14e match
6417ce7d-b1ac-4773-85bc-9d60f2d22d05    15e match

Comment et avec quel commande je pourrais le faire ?

Dans l'attente de vos réponses en vous remerciant d'avance.

  • # lire son cours et mettre en application

    Posté par  . Évalué à 3.

    cela ressemble quand meme enormement à un TP ou un exo.

    donc commencer par lire son cours pour trouver quels outils utiliser.

    des pistes de reflexions :

    pour le 1. je ferais un script perl stockant la chaine et sa longueur dans un tableau, puis un tri du tableau par taille, et un affichage du tableau trié

    pour le 2. ca ressemble à un compteur, qui chaque fois qu'il trouve une ligne avec le 'externalId' l'affiche et ajoute 1

    • [^] # Re: lire son cours et mettre en application

      Posté par  . Évalué à 2.

      Pour le 1 il y a plus simple : en une ligne de shell ça peut être fait : un ls avec l'option qui va bien pipé dans un sort avec clé sur le champ adequat (man ls man sort, avec l'option -k -n).

      Pour le second, il ne s'agit pas d'un compteur mais du parsing du fichier xml. Un petit coup de awk devrait pouvoir faire l'affaire.

  • # Ce n'est pas bien de demander aux autres de faire ses exercices ....

    Posté par  . Évalué à 2.

    sinon : man wc, man ls …

    Pour le second exo, on ne comprend rien, la syntaxe xml est passé à la trappe avec la mise en page wiki.

    Enfin, une recherche google sur "cours shell unix" te donnera plein de sites pour apprendre.

    Essaie de faire quelque chose à partir de tout ça. Si tu n'y arrives pas, reviens ici et poste nous ton code : on pourra t'aider à comprendre ce qui ne va pas. Sinon, si tu payes, je veux bien te faire tes exos (mais je suis facturé 600 euros/jour - avec journée de 7h30) donc indique-moi combien de temps tu peux payer:) ).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.