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 :

[bash] Création d'arborescence applicative


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 17
    Points
    17
    Par défaut [bash] Création d'arborescence applicative
    Bonjour à tout le monde


    Pour les besoins d'installations applicatives, je dois creer des arborescences

    Exemple pour une application multimedia avec une ihm en flask


    └── Euterpe
    ├── conf
    ├── fontes
    ├── ihm
    │** ├── static
    │** └── templates
    ├── Logs
    ├── Musique
    │** ├── MP3
    │** ├── Playlists
    │** └── Podcasts
    └── temp


    Pour ce faire, j'ai un fichier ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    [Repertoires]
    # Les Repertoires et les Sous-repertoires ont un / a la fin
    REP_INSTALL            = /Projets/Euterpe/
    REP_BASE               = /Projets/Euterpe/
    SOUS_REP_BASE_MUSIQUE       = Musique/
    SOUS_REP_BASE_CONF          = conf/
    SOUS_SOUS_REP_BASE_MUSIQUE_MP3           = MP3/
    SOUS_SOUS_REP_BASE_MUSIQUE_PODCASTS      = Podcasts/
    SOUS_SOUS_REP_BASE_MUSIQUE_PLAYLISTS     = Playlists/
    SOUS_REP_BASE_IHM           = ihm/
    SOUS_SOUS_REP_BASE_IHM_TEMPLATES = templates/
    SOUS_SOUS_REP_BASE_IHM_STATIC    = static/
    SOUS_REP_BASE_FONTES        = fontes/
    SOUS_REP_BASE_IMAGES        = temp/
    SOUS_REP_BASE_LOGS          = Logs/
    et un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    create_directories_recursive() {
        local base_variable=$1
        local base_dir="$2"
      mkdir -p "$base_dir"
        liste_dir=$(env | grep -E "^SOUS_$base_variable")
        #IFS="\n"    
        for ligne in "$liste_dir"; do
        for line in $liste_dir; do
                variable=$(echo "$line" | cut -d '=' -f1)
                sous_rep=$(echo "$line" | cut -d '=' -f2)
                #echo "Variable: $variable, Sous-répertoire: $sous_rep"
                create_directories_recursive $variable $base_dir$sous_rep
        done
     
        done
    }
     
    # Exemple d'utilisation
    #REP_BASE="/Projets/ma-PGI/"
     
    # Appel de la fonction pour créer les répertoires
    create_directories_recursive "REP_BASE" "$REP_BASE"

    Alors, ça fait le job, mais je ne trouve pas ça élégant

    Vous auriez une autre manière de faire ?


    D'avance merci
    Olivier

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 559
    Points : 19 399
    Points
    19 399
    Par défaut
    Bonjour,

    il est bien pénible ce fichier .ini (les fichiers .ini en général ) !
    c'est toi qui l'a conçu ?

    on ne voit pas comment tu "lis" le fichier.
    je ne comprends pas pourquoi tu fais deux boucles sur $liste_dir ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 125
    Points : 4 495
    Points
    4 495
    Par défaut
    bonjour
    Citation Envoyé par bong101 Voir le message
    Pour ce faire, j'ai un fichier ini
    Une raison d'utiliser un format windows ?
    Existe toml, yalm et même json qui supportent les arborescences
    Existe des utilitaires linux pour lire ces fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [Repertoires]
    REP_BASE               = /Projets/Euterpe/
    SOUS_REP_BASE_MUSIQUE       = Musique/
    SOUS_SOUS_REP_BASE_MUSIQUE_MP3           = MP3/
    SOUS_SOUS_REP_BASE_MUSIQUE_PODCASTS      = Podcasts/
    ...
    Je trouve ton format arbo complexe, si tu désires que du ini, ce n'est pas plus parlant, une chose du type ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [Repertoires]
    REP_BASE  = /Projets/Euterpe/
    REP_BASE.MUSIQUE  = Musique/
    REP_BASE.MUSIQUE.MP3  = MP3/
    REP_BASE.MUSIQUE.MP3.FR  = francais/
    REP_BASE.MUSIQUE.PODCASTS  = Podcasts/
    ...
    ps: oui, il nous manque la lecture du ini et des valeurs passées dans ENV !
    C'est ici que tu peux faire des datas plus simples pour ton script. Par exemple une simple boucle sur un simple tableau (de répertoires complets)
    $moi= ( !== ) ? : ;

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 298
    Points : 12 778
    Points
    12 778
    Par défaut
    Perso, je trouve ça complètement aberrant d'utiliser un format de fichier conf dans un format non compris par le langage lui même.

    Ici, ton but est de créer une arborescence pas de créer un parseur de fichier de conf car en faisant ça, tu perds tous les avantages du langage et de la commande mkdir...

    Exemple pour créer l'arbo que tu donnes (en graph), en une seule commande:
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    $ mkdir -p Projets/{Euterpe,conf,fontes,ihm/{static,templates},Logs,Musique/{MP3,Playlists,Podcasts},temp}
    Cordialement.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 125
    Points : 4 495
    Points
    4 495
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    en une seule commande:
    il a écrit "les besoins d'installations", je suppose donc que par la suite, il va copier quelques fichiers dans cette arborescence ? Et qu'en fait, nous n'avons pas toutes les données.

    Citation Envoyé par disedorgue Voir le message
    fichier conf dans un format non compris par le langage lui même.
    l'application est en python, étrange que l'install ne soit pas incorporée dans le projet (make ou script python ou mieux, le classique `pyproject.toml` exemple).

    Ce .ini fait partie de l'application ou est un fichier créé uniquement pour l'install bash ? Et puisque l'application est en python, il est parsé en python pour être transmit au script bash ?
    $moi= ( !== ) ? : ;

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 298
    Points : 12 778
    Points
    12 778
    Par défaut
    Super, donc on prend le principe de monter une usine à gaz en shell pour soulager ce pauvre petit python et si l' installation se passe mal, se sera à cause du développement en shell dont on donne des contraintes inacceptable.
    Cordialement.

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 251
    Points : 13 477
    Points
    13 477
    Par défaut
    Bonjour

    Il prend son fichier initial, il supprime les espaces inutiles, il remplace [Répertoires] par # Répertoires (ou même # [Répertoires]), et il le source !

    ou
    Et voilà, fini, facile.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 298
    Points : 12 778
    Points
    12 778
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    il supprime les espaces inutiles
    Là, je pense qu'il faudra lui expliquer ce qu'est un espace inutile
    Cordialement.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/08/2010, 10h37
  2. Réponses: 4
    Dernier message: 13/04/2010, 13h40
  3. Réponses: 6
    Dernier message: 14/03/2008, 11h54
  4. Réponses: 3
    Dernier message: 16/10/2007, 11h48
  5. arborescence d'une application web avec Tomcat
    Par faten85 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 10/04/2007, 15h20

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