IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Aide de demarrage sur un script perso


Sujet :

Shell et commandes GNU

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    Merci pour ton aide

    Cependant ; il y a un p'tit souci :

    on copie le dossier soft dans le dossier soft cree precedemment.


    Par ailleurs, je souhaite savoir si en utilisant mes variables ; le code est bon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cd /var/www/test2/12-10-2008
    mkdir soft
    variable=`ls | grep -v [.doc]$`
    mv $variable /var/www/test2/12-10-2008/soft

  2. #22
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Oops, tu as raison, il y a de la récursivité dans l'air. Il faut donc supprimer aussi le répertoire cible de la liste de fichiers à transférer. Donc on corrige, tout de suite!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cd /var/www/test2/12-10-2008
    mkdir -p soft
    mv !(*.doc|soft) soft
    Explications:
    mkdir -p soft: l'option -p permet de ne pas avoir d'erreur si le répertoire est déjà présent. Je peux donc relancer la commande si je n'y arrive pas du premier coup (habituel pour moi).
    !(*.doc|soft): c'est le shell qui va lui-même sélectionner tous les fichiers sauf ( '!(...)' ) les fichiers se terminant par .doc ou ( '|' ) se nommant soft.

    Je n'ai pas testé l'ensemble des trois commandes, mais j'espère que c'est correct. Au fait, s'il y a un répertoire, il risque d'y avoir une erreur.

    Pour ton code, il est faux pour deux raisons. C'est toi-même qui a donné la première: récursivité de la commande mv. La seconde est l'utilisation des crochets. Si tu fais un man bash, tu verras au chapitre pattern matching (j'ai tout en anglais) à quoi servent les crochets.

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    Il y a un probleme de syntaxe sur la ligne mv.

    Pourtant, en utilisant les [] je n'ai pas d'erreurs dans mon code. Là où je rencontre une dificulté ; c'est d'exclure des fichiers et des repertoires.

    Voici mon code, et je prefere utiliser mon systeme de variable, je trouve ce principe plus ordonné.

    Ce qui est mis en commentaire (les dossiers) ne fonctionne pas ; je cherche à exclure l'envoi du sous-dossier Volta dans le dossier general reference
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cd /mnt/backup/manu/jour/12-11-2008/reference
    mkdir -p soft
    fichiers=`ls | grep -v [.doc.pdf]$`
    # dossiers=`ls | grep  [Volta]`
    mv $fichiers /mnt/backup/manu/jour/12-11-2008/reference/soft
    # mv $dossiers /mnt/backup/manu/jour/12-11-2008/reference/soft

  4. #24
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Si tu prenais le temps de lire la doc, comme je te le demande, tu saurais que le shell interprète [.doc]$ comme un filtre utilisé ici sur la liste des fichiers: tous les fichiers se terminant par . ou par d ou par o ou par c sont sélectionnés. Donc les fichiers doc sont sélectionnés uniquement parce qu'il y a [c]$. Mais le fichier toto.c serait également sélectionné.

    Définir une variable pour ne l'utiliser qu'une seule fois alourdit le code, selon moi.

    Pour la commande mv, n'oublie pas que tu es déjà dans le répertoire reference, vu la commande cd quelques lignes au-dessus. Donc mv $fichiers soft est plus concis et lisible.

    Enfin, mv !(*.doc|soft) soft fonctionne correctement sur Bash.

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    J'ai maintenant relu le man, et tu as raison que les crochets cherchent les caractères renseignés.

    J'ai changé quelques points sur mon script et il fonctionne à présent parfaitement bien.

    Je vous remercie et particulièrement jmelyn


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. demande d'aide sur un script
    Par threepwood dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 24/05/2007, 11h45
  2. Programme pour booter au demarrage sur un script
    Par undercrash dans le forum Linux
    Réponses: 3
    Dernier message: 01/03/2007, 14h43
  3. Aide sur un script
    Par odrimont dans le forum Linux
    Réponses: 13
    Dernier message: 03/07/2006, 23h03
  4. A l'aide svp j'ai de gros problemes sur un script php
    Par schtek2 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 01h25
  5. Besoin d'aide sur un script SQL de recherche
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/10/2005, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo