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 :

Exécution d'un shell placé dans un répertoire différent du répertoire courant


Sujet :

Shell et commandes GNU

  1. #21
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ah ok. Si tu enregistres le chemin du script pour y revenir lors d'un appel ultérieur, tu peux te retrouver avec un "ancien" chemin devenu ensuite invalide dans un autre contexte d'appel.
    Mais là j'espère que tu admettras que c'est quand-même aller chercher super loin le cas extrême de l'extrême non ?
    J'ai déjà eu le cas, dans le contexte d'un script d'installation (très basique) pour une appli tiers qui devait configurer des chemins dans les fichiers de configuration de l'appli en question.
    Cordialement.

  2. #22
    Membre régulier Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 160
    Points : 80
    Points
    80
    Par défaut
    Merci pour vos réponses.
    Je ne manquerai pas de les analyser et de les tester plus tard.
    Car là, il fait déjà plus de 30°C et je n'en peux plus !

  3. #23
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    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 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour
    Citation Envoyé par Liamm Voir le message
    Autrement dit, les 5 répertoires contiennent les mêmes 3 scripts : script01, script02, script03 mais des données différentes.
    Si j'ai bien compris, tu as aussi un problème de conception à ce niveau parce que ici aussi, tu ne gères pas les chemins (ou mal).
    Tu as donc à faire un changement dans ton architecture et d'en déduire des changements de codes dans ton script appelant et tes script(s?) appelé(s?)
    $moi= ( !== ) ? : ;

  4. #24
    Nb
    Nb est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 148
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    il est préférable dans un script de toujours utiliser des chemins absolus, ce qui rend cd inutile.
    En dehors du fait qu'il y a des cas de figure où les cd et l'utilisation de chemins relatifs simplifie grandement la vie, je ne comprend pas pourquoi ça serait préférable d'utiliser des chemin absolus.

  5. #25
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nb Voir le message
    je ne comprend pas pourquoi ça serait préférable d'utiliser des chemin absolus.
    Parce que le chemin ne dépend alors pas de l'emplacement de celui qui appelle le script, ce qui simplifie beaucoup de problèmes. Si tu dois bosser sur "/var/apt" ben vaut mieux nommer ce chemin en absolu plutôt que "../../../../../../../../../../../../../../../../../../../var/apt"

    Toutefois il peut arriver que le script soit dédié à un projet ; et donc ira travailler sur des fichiers du projet. Le script et les fichiers sont donc situés tous deux dans l'arborescence du projet. Dans ce cas, généralement je repère les fichiers par rapport à l'emplacement du script, en utilisant dirname "$0" déjà mentionné.
    Cela permet au projet d'être déplacé ensuite n'importe où dans l'arborescence sans avoir à modifier le script. Tant que l'arborescence intrinsèque du projet ne change pas, ça fonctionne (bon sauf cas spécifique exposé par disedorgue mais qui doit être quand-même assez rare).
    A ce moment là, si l'utilisateur appelle le script en relatif cela donne des chemins en relatifs (mais ça fonctionne) et si l'utilisateur appelle le script en absolu ça donne des chemins en absolus (et ça fonctionne aussi). Mais je ne sais pas trop comment nommer ce type de chemin...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #26
    Nb
    Nb est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 148
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Parce que le chemin ne dépend alors pas de l'emplacement de celui qui appelle le script, ce qui simplifie beaucoup de problèmes. Si tu dois bosser sur "/var/apt" ben vaut mieux nommer ce chemin en absolu plutôt que "../../../../../../../../../../../../../../../../../../../var/apt"

    Toutefois il peut arriver que le script soit dédié à un projet ; et donc ira travailler sur des fichiers du projet. Le script et les fichiers sont donc situés tous deux dans l'arborescence du projet. Dans ce cas, généralement je repère les fichiers par rapport à l'emplacement du script, en utilisant dirname "$0" déjà mentionné.
    Cela permet au projet d'être déplacé ensuite n'importe où dans l'arborescence sans avoir à modifier le script. Tant que l'arborescence intrinsèque du projet ne change pas, ça fonctionne (bon sauf cas spécifique exposé par disedorgue mais qui doit être quand-même assez rare).
    A ce moment là, si l'utilisateur appelle le script en relatif cela donne des chemins en relatifs (mais ça fonctionne) et si l'utilisateur appelle le script en absolu ça donne des chemins en absolus (et ça fonctionne aussi). Mais je ne sais pas trop comment nommer ce type de chemin...
    Oui, donc rien de plus que du bon sens. Donc ce n'est pas comme essayer de parser le resultat d'un ls dans un script, là il n'y a aucune raison technique pour ne pas utiliser de cd tant que l'on sait ce que l'on fait.

  7. #27
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nb Voir le message
    là il n'y a aucune raison technique pour ne pas utiliser de cd tant que l'on sait ce que l'on fait.
    Tout à fait. J'essaye cependant de l'éviter autant que possible.
    Et si je dois m'y résoudre, alors je préfère passer par pushd ce qui me permet, avec popd, de revenir ensuite à mon point d'origine.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #28
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    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 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Il est quand même très simple de passer le répertoire "de travail" au script via fichier.conf, paramètre au script, variable d'environnement…

    De plus il est plus sécurisé d'utiliser toujours les chemins absolus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    travail="$HOME/workspace/datas series"
    cd "$travail"
    rm *.*   # :aie: si le répertoire n'est plus accessible
    # ou même simplement extraire les fichiers d'une archive ou autre ...
     
    travail="${1:-$HOME/workspace/datas series}" 
    [[ "$travail" != $HOME* ]] && exit 2
    rm "$travail/"*.*     # pas de tragédie à l'horizon :)
    EDIT: merci Sve@r , modifié
    $moi= ( !== ) ? : ;

  9. #29
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    rm "${travail}/*.*" # pas de tragédie à l'horizon :)
    Il y aura d'autant moins de tragédie à l'horizon que dans les doubles quotes, l'étoile n'est pas expandue

    Vérifie aussi travail="${1:-'~/travail'}" car je sens que les simples quotes vont avoir aussi un rôle assez important dans la gestion réussie (en fait pas) du tilde
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/07/2010, 19h57
  2. Exécuter du code VBA placé dans un champ de type mémo
    Par funkyjul dans le forum VBA Access
    Réponses: 8
    Dernier message: 19/07/2010, 09h56
  3. Réponses: 4
    Dernier message: 17/07/2008, 13h40
  4. Ouvrir un fichier dans le répertoire courant
    Par ShAk44 dans le forum Excel
    Réponses: 2
    Dernier message: 11/07/2007, 16h18
  5. [FPDF] créer un fichier PDF dans le répertoire courant
    Par patdez dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/10/2005, 15h37

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