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 : variable représentant un dossier et pourtant vide


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut Bash : variable représentant un dossier et pourtant vide
    Quelque chose de très basique doit m'échapper.

    Dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ dossier=$(grep -E "^A*rchiver$" *)
    $ du -s $dossier
    1212021212
    $ echo $dossier
    (rien)
    Ainsi je voudrais aller dans ledit répertoire. Mais :
    Me ramène à la racine.

    Ou même :
    Est inopérant.

    Merci par avance de m'éclairer.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    grep -E "^A*rchiver$" * va te retourner les lignes correspondant au modèle dans les fichiers du répertoire courant, pas des noms de fichier ou de répertoire... à moins que le contenu de ces fichiers soient eux-mêmes des listes de répertoires ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Il semblerait que ta commande grep -E "^A*rchiver$" * ne renvoie absolument rien, si ce n'est du vide (paradoxalement non vide, qui prend en compte le nombre de fichiers lus par grep, et qui fait varier le poids de la variable, d'où le résultat de la commande "du -s").
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Merci pour ces précisions.
    J'aurais dû ajouter qu'avec :
    Il m'affiche bien la taille du répertoire en question. Et aussi un message par manque de permissions. Du genre :
    du ./A archiver/bidule : Permission non accordée.

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    On peut voir à quoi ressemble la sortie de la commande grep -E "^A*rchiver$" * s'il te plaît ? Merci.
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(grep -E "^A*rchiver$" *)
    Me donne une invite : ">"


    Edit: j'ai oublié de préciser, ne pensant pas que cela aurait une importance mais Dans cette session.

  7. #7
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par ticNFA Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(grep -E "^A*rchiver$" *)
    Me donne une invite : ">"
    Je me répète : Que renvoie la commande grep -E "^A*rchiver$" * depuis un terminal ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Pardon, rien. Et:

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Donc, il ne te reste plus qu'à revoir ta regex pour avoir un résultat
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par ticNFA Voir le message
    Quelque chose de très basique doit m'échapper.

    Dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ dossier=$(grep -E "^A*rchiver$" *)
    $ echo $dossier
    (rien)
    Citation Envoyé par ticNFA Voir le message
    Merci pour ces précisions.
    J'aurais dû ajouter qu'avec :
    Il m'affiche bien la taille du répertoire en question. Et aussi un message par manque de permissions. Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    du ./A archiver/bidule : Permission non accordée.
    Elle est là, la solution!

    Manifestement, dans le répertoire courant, tu as un répertoire nommé 'A archiver'. Exact?
    Et tu essaie de récupérer, dans la variable 'dossier', le nom du répertoire en faisant un truc comme dossier=$(grep -E "^A*rchiver$" *). Exact?
    Et tu espères que '*' te permettra de matcher l'espace après le 'A' de 'A archiver'. Exact?

    Sauf qu'il y a plusieurs erreurs dans cette instruction (déjà expliquées).

    Ce qui se rapprocherait le plus de ce que tu as voulu faire serait, àmha:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dossier=$(echo * | grep -E "^A.*rchiver$")
    Mais le plus simple, toujours àmha, serait de juste faire:


    puis, à chaque fois que tu veux référencer 'dossier', bien penser à le mettre entre quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls "${dossier}"
    cd "${dossier}"
    etc.

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Juste par souci de compréhension commune...

    La commande grep -E "^A*rchiver$" * va chercher dans tous les fichiers présents dans le répertoire d'où elle est lancée, et uniquement dans ce répertoire sans aucune récursivité, une correspondance au motif donné, et renverra sur la sortie le nom du fichier suivi de la ligne où a été trouvé le motif.

    En aucun cas cette commande ne recherchera un quelconque répertoire nommé "A archiver".
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Merci à vous pour ce 'désembrouillage' et pardon pour la confusion.

    Citation Envoyé par jack-ft Voir le message
    Et tu essaie de récupérer, dans la variable 'dossier', le nom du répertoire en faisant un truc comme dossier=$(grep -E "^A*rchiver$" *). Exact?
    Tout à fait.
    Et tu espères que '*' te permettra de matcher l'espace après le 'A' de 'A archiver'. Exact?
    Encore oui.

    Sauf qu'il y a plusieurs erreurs dans cette instruction (déjà expliquées).

    Ce qui se rapprocherait le plus de ce que tu as voulu faire serait, àmha:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dossier=$(echo * | grep -E "^A.*rchiver$")
    Mais le plus simple, toujours àmha, serait de juste faire:
    En effet. Mais dans chaque dossier le répertoire s'appelle 'A archiver', 'A\ archiver', 'A Archiver'.
    Dans le fond, le plus simple reste encore de renommer ces répertoires, ce que je vais finalement faire. Mais je me posais la question, à laquelle vous avez répondue, pour mon édification personnelle.

    Juste par souci de compréhension commune...
    J'avais dit très basique. Merci zipe31.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable ni "missing value", ni "", mais pourtant vide !
    Par wizardman dans le forum AppleScript
    Réponses: 2
    Dernier message: 15/07/2013, 12h04
  2. Réponses: 11
    Dernier message: 01/05/2008, 01h37
  3. [script bash] variables non affichées
    Par persam dans le forum Administration système
    Réponses: 4
    Dernier message: 08/01/2008, 18h21
  4. [bash] Tester si un dossier est vide
    Par coincoin22 dans le forum Shell et commandes GNU
    Réponses: 22
    Dernier message: 30/07/2007, 19h19
  5. VBA - variable représentant un champ texte
    Par cyraile dans le forum Access
    Réponses: 13
    Dernier message: 04/01/2007, 17h19

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