Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 09h38   #1
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
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.
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 12h15   #2
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Histoire d'être plus clair :

Code :
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
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h06   #3
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Essaie de faire :
cd "$mavariable"

(en remplaçant cd par tes commandes... )
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h09   #4
Membre éprouvé
 
Homme
Ingénieur systèmes et réseaux
Inscription : août 2007
Messages : 508
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : août 2007
Messages : 508
Points : 464
Points : 464
Citation:
Envoyé par krislec Voir le message
souce = /home/toto
destination = /media/WD Disk ne fonctionne pas
Mets la variable destination entre guillemets.
Code :
1
2
 
destination = "/media/WD Disk"
Ca donne koi?
publicStaticVoidMain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h55   #5
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
ça ne change rien de mettre des quotes autour de la chaîne dans l'affectation de la variable.
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h11   #6
Membre éprouvé
 
Homme
Ingénieur systèmes et réseaux
Inscription : août 2007
Messages : 508
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : août 2007
Messages : 508
Points : 464
Points : 464
Est ce que tu peux dire à quelle ligne de ton script ca plante?
publicStaticVoidMain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h18   #7
Membre éprouvé
 
Homme
Ingénieur systèmes et réseaux
Inscription : août 2007
Messages : 508
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : août 2007
Messages : 508
Points : 464
Points : 464
Citation:
Envoyé par publicStaticVoidMain Voir le message
Mets la variable destination entre guillemets.
Code :
1
2
 
destination = "/media/WD Disk"
Ca donne koi?
Et si à la place des guillemets, tu utilises des quotes ' '.

Code :
1
2
 
destination = '/media/WD Disk'
Par exemple, j'ai exécuté la série d'instructions suivantes, regarde bien :
Code :
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
publicStaticVoidMain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 17h40   #8
Membre habitué
 
Inscription : février 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 159
Points : 125
Points : 125
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 :
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 :
Elverion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 11h18   #9
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
@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"
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 10h39   #10
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Un exemple en ligne de commande :
Code :
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.
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 10h47   #11
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
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
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 11h25   #12
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
mmmh... bizarre....
Est-ce que vous pourriez executer les commandes suivantes et fournir le résultat :
Code :
1
2
3
4
 
dir="/tmp/foo bar"
mkdir "$dir"
ls -l
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 11h33   #13
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Effectivement, ça marche !
Il me semblait pourtant que ça plantait hier...

Désolé pour les conneries que j'ai dites !
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 11h36   #14
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Meuh nan meuh nan.... y'a pas d'mal
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h38.


 
 
 
 
Partenaires

Hébergement Web