Programmation shell

khou Messages postés 14 Statut Membre -  
khou Messages postés 14 Statut Membre -
Merci les amis pour hier vous m'avez beaucoup aidé en fait cé une série d'exercices sur la programmation shell que je suis entrain de faire . jé éssayé de faire l'autre exercice mé jé eu dé problemes pour le résoudre voici l'énoncé :A partir d'une liste de fichiers en entree cherchez pour chaque type de fichiers cible le type de compression utilisé en utilisant la commande file et donner automatiquement la commande de decompressuion (gunzip , unzip , gzip , uncompress , autres ) . si un fichier cible n'est pas compréssé affichez un message :" fichier pas compressé " et ne faites aucune action . merci pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    la commande file te permettras de trouver le type de fichier
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    A partir d'une liste de fichiers en entree
    Commande (syntaxe) à utiliser :

    for fich in *; do ...; done

    Voir aussi : comment lire un fichier ligne par ligne

    cherchez pour chaque type de fichiers cible le type de compression utilisé en utilisant la commande file
    Commandes (syntaxe) à utiliser :

    file [ -options ] fichier

    couplée avec la commande "cut" (au travers d'un "pipe" | )

    Voir : man file | man cut

    et donner automatiquement la commande de decompressuion (gunzip , unzip , gzip , uncompress , autres)
    Commande (syntaxe) à utiliser :

    case $name in
    gzip) ... ;
    bzip2) ...;
    *) ...;
    esac


    Voir : man bash -P 'less -p " case"'
    Voir aussi : http://www.shellunix.com/sh.html#case

    si un fichier cible n'est pas compréssé affichez un message :" fichier pas compressé " et ne faites aucune action
    Ca ça rentre dans le dernier cas de la syntaxe "case ... esac"

    Voir : man bash -P 'less -p " case"'

    Voir aussi : http://abs.traduc.org/abs-4.1-fr/
    0
    1. khou Messages postés 14 Statut Membre
       
      voici le code que jé executé mais ca ne marche pas , ca m'affiche des erreurs :
      for fich in *
      do
      file fich
      done
      case $name in
      gzip)...;
      unzip)...;
      bunzip)...;
      uncompress)...;
      esac
      echo" fichier pas compressé "
      0
  3. JoloKossovar Messages postés 111 Statut Membre 33
     
    C'est quoi l'erreur ?
    0
    1. khou Messages postés 14 Statut Membre
       
      l'erreur est : fich:ERROR :cannot open' fich' ( No such file or directory )
      0
  4. JoloKossovar Messages postés 111 Statut Membre 33
     
    bon ben c assez explicit ^^ ton script est dans le meme répertoire que tes fichiers ? Si ce n'est pas le cas essaie de le placer ds le meme repertoire.
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut JoloKossovar,

      Le problème est ailleurs en fait.
      Dans mon premier post je lui ai donné les grandes lignes concernant son exercice avec des noms communs (fich - $name - etc.) et avec des points de suspension en guise de commandes schématisées (do ... done) et il a repris mot pour mot mes exemples, donc forcément que le script bugue ;-))
      0
      1. khou Messages postés 14 Statut Membre > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        jarive pas à trouver les bonnes commandes à entrer pe tu m'aider s'il te plé merci
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Il faut que tu décomposes ton script une commande après l'autre avant de vouloir faire tout d'un coup.

        Ouvre une console va dans le répertoire où sont sensés se trouver des fichiers compressés (*.gz, *.bz2, etc.) et affiche-nous le résultat de :
        for fich in *; do file "$fich"; done
        ;-))
        0
      3. khou Messages postés 14 Statut Membre > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        voici le script que jé écri :
        for i in $*
        do
        file $i
        done
        case $0 in
        ginzip) gunzip $i;;
        bunzip) bunzip $i;;
        unzip) unzip $i;;
        uncompress) uncompress $i;;
        *) echo"le fichier$i n'est pas compresse";;
        esac
        quand je compile le script ca m'affiche : ERREUR LIGNE 11 : echo"le fichier $i n'est pas compresse ": COMMAND NOT FOUND
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. JoloKossovar Messages postés 111 Statut Membre 33
     
    ha bah vi forcément ^^
    0