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 :

gérer un espace dans le nom d'un répertoire ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 118
    Points : 44
    Points
    44
    Par défaut gérer un espace dans le nom d'un répertoire ?
    Je tente en vain de developper un script de sauvegarde sur disque dur usb Western digital sous ubuuntu. le "hic" c'est qu'il me monte mon disque toujours en /media/WD Disk, l'espace entre les 2 D entrainant en conflit avec mes variables.

    souce = /home/toto
    destination = /media/WD Disk ne fonctionne pas.

    erreur du script généré : "répertoire de destination introuvable"

    J'ai essayé /media/WD\ Disk .....ne fonctionne pas non plus ???

    est-il possible de modifié le Label du disk pour avoir ex: WD_DISK ?

    Merci d'avance

    K.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 118
    Points : 44
    Points
    44
    Par défaut
    Histoire d'être plus clair :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    # !/bin/sh
    #
    ################ DEFIBITION DES VARIABLES :
    # Date:
    DATE=$(date +%Y%m%d_%H.%M)
    # Dossier source Php de Paracelse :
    REPERTOIRE_SOURCE_PHP="/var/www/paracelse/"
    # Dossier destination:
    REPERTOIRE_DESTINATION="/media/WD Disk"
    # Dossier destination de la sauvegarde PHP de Paracelse:
    REPERTOIRE_DESTINATION_PHP="/media/WD Disk/paracelse_save/php"
    # Dossier destination de la sauvegarde MYSQL de Paracelse:
    REPERTOIRE_DESTINATION_MYSQL="/media/WD Disk/paracelse_save/mysql"
     
    ############### Disque USB présent ?
    # Détecter la présence du volume
    # de destination
    # et interrompre l'opération si nécessaire :
    if [ ! -e "$REPERTOIRE_DESTINATION" ]
    then
    echo "Attention, l'unité de sauvegarde n'est pas présente..."
    exit
    fi
     
    ############### Sauvegarde :
    ## MYSQL :
    # Renommage de la sauvegarde précédente :
    for i in `ls $REPERTOIRE_DESTINATION_MYSQL/*.sql`;
    do
    mv $i $i.old
    done
     
    ## Sauvegarde Base Paracelse :
    mysqldump -u root -pChloe28Leo29 --opt paracelse -h localhost | cat > $REPERTOIRE_DESTINATION_MYSQL/$DATE.sql
    ## Suppression de la précédente sauvegarde:
    if [ -f `ls $REPERTOIRE_DESTINATION_MYSQL/*.sql` ]
    then
    rm -rf $REPERTOIRE_DESTINATION_MYSQL/*.sql.old
    else
    echo "La sauvegarde n'a pas été faite"
    exit
    fi
     
    ## PHP :
    # Sauvegarde des dossiers Paracelse du site:
    rsync -a --delete --stats --progress --ignore-errors $REPERTOIRE_SOURCE_PHP $REPERTOIRE_DESTINATION_PHP

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Essaie de faire :
    cd "$mavariable"

    (en remplaçant cd par tes commandes... )

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par krislec Voir le message
    souce = /home/toto
    destination = /media/WD Disk ne fonctionne pas
    Mets la variable destination entre guillemets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    destination = "/media/WD Disk"
    Ca donne koi?

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    ça ne change rien de mettre des quotes autour de la chaîne dans l'affectation de la variable.

  6. #6
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Est ce que tu peux dire à quelle ligne de ton script ca plante?

  7. #7
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    Mets la variable destination entre guillemets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    destination = "/media/WD Disk"
    Ca donne koi?
    Et si à la place des guillemets, tu utilises des quotes ' '.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    destination = '/media/WD Disk'
    Par exemple, j'ai exécuté la série d'instructions suivantes, regarde bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    lindows@lindows-laptop:~$ mkdir 'toto titi'
    lindows@lindows-laptop:~$ ls
    Desktop  Examples  Images  Modèles  Musique  Public  public_html  toto titi  Vidéos
    lindows@lindows-laptop:~$ cd toto\ titi/
    lindows@lindows-laptop:~/toto titi$ ls
    lindows@lindows-laptop:~/toto titi$ cd ..
    lindows@lindows-laptop:~$ ls
    Desktop  Examples  Images  Modèles  Musique  Public  public_html  toto titi  Vidéos
    lindows@lindows-laptop:~$ rmdir toto\ titi/
    lindows@lindows-laptop:~$ ls
    Desktop  Examples  Images  Modèles  Musique  Public  public_html  Vidéos

  8. #8
    Membre actif
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    174
    Détails du profil
    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2008
    Messages : 174
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    Il faut tout simplement que tu "échappe" ton espace.
    UNIX considère l'espace comme un caractère spécial, il faut donc que tu lui dise : ce n'est pas un caractère spécial.

    ceci ce fait avec le caractère '\'.
    Ta ligne devient donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    destination = "/media/WD\ Disk"
    Pour voir, ouvre un terminal, va dans le repertoire père de WD Disk ( /media ) tape
    puis appui sur la touche 'tabulation'
    Tu verra, l'auto-complétion va te mettre :

  9. #9
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    @Elverion, PublicStaticVoidMain :
    Je sais que c'est gratifiant de poster une solution, mais faites l'effort de lire la demande de départ en entier !
    krislec connaît les caractères d'échappement :
    Citation Envoyé par lui
    J'ai essayé /media/WD\ Disk .....ne fonctionne pas non plus ???
    Le problème est le passage de l'argument sous forme de variable dans le script. Même avec le caractère d'échappement, l'interpréteur envoir deux paramètres à la commande. ('Mon' et 'Rep' au lieu de 'Mon\ Rep').

    Donc allez, je le remets :
    cd "$MaVariable"

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    Un exemple en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ REPERTOIRE_DESTINATION="/media/WD Disk"
    $ ls "$REPERTOIRE_DESTINATION"/*.sql
    Il me semble qu'il suffit de protéger l'invocation de la variable par des guillemets.

  11. #11
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Sur mon bash en tous cas, ça ne suffit pas.
    Les guillemets de l'affectation de la variable ne sont par intégrés dans la variable : le "\ " est nécessaire.
    Sinon, sur la protection de l'invocation par les guillemets, je crois que je suis d'accord

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    mmmh... bizarre....
    Est-ce que vous pourriez executer les commandes suivantes et fournir le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dir="/tmp/foo bar"
    mkdir "$dir"
    ls -l

  13. #13
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Effectivement, ça marche !
    Il me semblait pourtant que ça plantait hier...

    Désolé pour les conneries que j'ai dites !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    Meuh nan meuh nan.... y'a pas d'mal

Discussions similaires

  1. gérer les espaces dans les noms de répertoire
    Par Jasmine80 dans le forum Langage
    Réponses: 9
    Dernier message: 28/06/2012, 13h50
  2. problème d'espace dans le nom d'un répertoire
    Par Jasmine80 dans le forum Langage
    Réponses: 6
    Dernier message: 20/01/2009, 17h38
  3. Smbclient et espace dans les noms
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 4
    Dernier message: 30/11/2005, 18h29
  4. download fichier avec espace dans le nom
    Par cb68 dans le forum Langage
    Réponses: 8
    Dernier message: 23/11/2005, 10h00
  5. Réponses: 4
    Dernier message: 29/10/2005, 18h36

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