Re: [Un peu HS] Fonction de protection de blancs et d'autres caractères...

2012-04-29 Par sujet David BERCOT
Le Sat, 28 Apr 2012 21:36:39 +0200,
Pierre Malard  a écrit :
>Le 28 avr. 2012 à 16:52, David BERCOT a écrit :
>> Le Sat, 28 Apr 2012 13:18:15 +0200,
>> Pierre Malard  a écrit :
>>> Le 27 avr. 2012 à 17:07, David BERCOT a écrit :
 Dans un script, je travaille sur des fichiers qui ont, dans leurs
 noms complets (répertoire + nom de fichier), des blancs et d'autres
 caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
 certains traitements.
 
 Je me demandais s'il existait une fonction de base qui permette de
 transformer le nom initial en nom... utilisable. Par exemple,
 /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
 d'installation De/*.vmdk
 serait transformé en
 /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
 d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]
 
 Si vous avez une piste, je suis preneur (dans mon exemple, il y a à
 la fois des blancs et une apostrophe, mais j'imagine qu'il existe
 d'autres caractères bizarres).
>>> 
>>> Je ne sais pas si ça peut répondre, mais as-tu essayé de simplement
>>> "quoter" ces noms de fichiers dans ton shell-script ? Attention de
>>> ne quoter que ce qui peut poser de problème et de ne pas oublier les
>>> accolades pour référencer les variables.
>> 
>> En effet, c'est ce que j'ai essayé de faire de manière générale et ça
>> marche plutôt bien.
>> 
>> Par contre, ça ne marche pas pour :
>> ssh $nomESX "ls -l \"`dirname \"$pathVM\"`/*.vmdk\""
>> 
>> D'ailleurs, si je ne dis pas de bêtises, même en mettant le nom du
>> répertoire de manière "protégée", ça ne fonctionne pas non plus...
>> 
>> En fait, avec cette ligne, ça ne marche que si le répertoire n'a pas
>> de caractère bizarre (blanc par exemple) et qu'il n'est justement pas
>> entre double quote.
>> 
>> Je dois avoir une erreur quelque part...
>
>Ça y est, j'ai trouvé !
>
>J'avais pensé que c'était l'utilisation d'un autre shell que BASH ou
>vous proposer de remonter d'un répertoire avant de lancer le "ssh", ou
>vous proposer d'utiliser "$()" plutôt que les classiques "back-quotes"
>mais c'était beaucoup plus simple.
>
>Vous avez "quoté" le "/*.vmdk". Hors, puisque l'étoile est fournie
>"quotée" au shell qui lance le "ls", il ne l'interprète pas et demande
>au "ls" de lister un fichier dont le nom est réellement "*.vmdk". il
>vous suffit de déplacer ceci comme ça :
>   ssh $nomESX "ls -l \"`dirname \"$pathVM\"`\"/*.vmdk"
>
>J'ai essayé chez moi, ça marche parfaitement :-)

En effet, chez moi ça marche aussi...
Merci pour ce bon conseil.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120429112803.1453073d@debian-david



Re: [Un peu HS] Fonction de protection de blancs et d'autres caractères...

2012-04-28 Par sujet Pierre Malard

Le 28 avr. 2012 à 16:52, David BERCOT a écrit :
> Le Sat, 28 Apr 2012 13:18:15 +0200,
> Pierre Malard  a écrit :
>> Le 27 avr. 2012 à 17:07, David BERCOT a écrit :
>>> Dans un script, je travaille sur des fichiers qui ont, dans leurs
>>> noms complets (répertoire + nom de fichier), des blancs et d'autres
>>> caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
>>> certains traitements.
>>> 
>>> Je me demandais s'il existait une fonction de base qui permette de
>>> transformer le nom initial en nom... utilisable. Par exemple,
>>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>>> d'installation De/*.vmdk
>>> serait transformé en
>>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
>>> d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]
>>> 
>>> Si vous avez une piste, je suis preneur (dans mon exemple, il y a à
>>> la fois des blancs et une apostrophe, mais j'imagine qu'il existe
>>> d'autres caractères bizarres).
>> 
>> Je ne sais pas si ça peut répondre, mais as-tu essayé de simplement
>> "quoter" ces noms de fichiers dans ton shell-script ? Attention de ne
>> quoter que ce qui peut poser de problème et de ne pas oublier les
>> accolades pour référencer les variables.
> 
> En effet, c'est ce que j'ai essayé de faire de manière générale et ça
> marche plutôt bien.
> 
> Par contre, ça ne marche pas pour :
> ssh $nomESX "ls -l \"`dirname \"$pathVM\"`/*.vmdk\""
> 
> D'ailleurs, si je ne dis pas de bêtises, même en mettant le nom du
> répertoire de manière "protégée", ça ne fonctionne pas non plus...
> 
> En fait, avec cette ligne, ça ne marche que si le répertoire n'a pas de
> caractère bizarre (blanc par exemple) et qu'il n'est justement pas
> entre double quote.
> 
> Je dois avoir une erreur quelque part...

Ça y est, j'ai trouvé !

J'avais pensé que c'était l'utilisation d'un autre shell que BASH ou vous 
proposer de remonter d'un répertoire avant de lancer le "ssh", ou vous proposer 
d'utiliser "$()" plutôt que les classiques "back-quotes" mais c'était beaucoup 
plus simple.

Vous avez "quoté" le "/*.vmdk". Hors, puisque l'étoile est fournie "quotée" au 
shell qui lance le "ls", il ne l'interprète pas et demande au "ls" de lister un 
fichier dont le nom est réellement "*.vmdk". il vous suffit de déplacer ceci 
comme ça :
ssh $nomESX "ls -l \"`dirname \"$pathVM\"`\"/*.vmdk"

J'ai essayé chez moi, ça marche parfaitement :-)

Cordialement


Pierre Malard
  « Les utopies ne sont souvent que des vérités prématurées »
  Alphonse de Lamartine
   |\  _,,,---,,_
   /,`.-'`'-.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)


perl -e '$_=q#: 3|\ 5-,3-3,2-: 3/,`.'"'"'`'"'"' 5-.  ;-;;,-:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(-/--'"'"'  `-'"'"'\-): 
22PLM::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: 
http://lists.debian.org/ca3d5443-7236-417c-a321-74519e036...@teledetection.fr



Re: [Un peu HS] Fonction de protection de blancs et d'autres caractères...

2012-04-28 Par sujet David BERCOT
Bonjour,

Le Sat, 28 Apr 2012 13:18:15 +0200,
Pierre Malard  a écrit :
>Le 27 avr. 2012 à 17:07, David BERCOT a écrit :
>> Dans un script, je travaille sur des fichiers qui ont, dans leurs
>> noms complets (répertoire + nom de fichier), des blancs et d'autres
>> caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
>> certains traitements.
>> 
>> Je me demandais s'il existait une fonction de base qui permette de
>> transformer le nom initial en nom... utilisable. Par exemple,
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De/*.vmdk
>> serait transformé en
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
>> d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]
>> 
>> Si vous avez une piste, je suis preneur (dans mon exemple, il y a à
>> la fois des blancs et une apostrophe, mais j'imagine qu'il existe
>> d'autres caractères bizarres).
>
>Je ne sais pas si ça peut répondre, mais as-tu essayé de simplement
>"quoter" ces noms de fichiers dans ton shell-script ? Attention de ne
>quoter que ce qui peut poser de problème et de ne pas oublier les
>accolades pour référencer les variables.

En effet, c'est ce que j'ai essayé de faire de manière générale et ça
marche plutôt bien.

Par contre, ça ne marche pas pour :
ssh $nomESX "ls -l \"`dirname \"$pathVM\"`/*.vmdk\""

D'ailleurs, si je ne dis pas de bêtises, même en mettant le nom du
répertoire de manière "protégée", ça ne fonctionne pas non plus...

En fait, avec cette ligne, ça ne marche que si le répertoire n'a pas de
caractère bizarre (blanc par exemple) et qu'il n'est justement pas
entre double quote.

Je dois avoir une erreur quelque part...

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120428165236.7edb9aa7@debian-david



Re: [Un peu HS] Fonction de protection de blancs et d'autres caractères...

2012-04-28 Par sujet Pierre Malard
Le 27 avr. 2012 à 17:07, David BERCOT a écrit :
> Dans un script, je travaille sur des fichiers qui ont, dans leurs noms
> complets (répertoire + nom de fichier), des blancs et d'autres
> caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
> certains traitements.
> 
> Je me demandais s'il existait une fonction de base qui permette de
> transformer le nom initial en nom... utilisable. Par exemple,
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
> d'installation De/*.vmdk
> serait transformé en
> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
> d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]
> 
> Si vous avez une piste, je suis preneur (dans mon exemple, il y a à la
> fois des blancs et une apostrophe, mais j'imagine qu'il existe d'autres
> caractères bizarres).

Je ne sais pas si ça peut répondre, mais as-tu essayé de simplement "quoter" 
ces noms de fichiers dans ton shell-script ?
Attention de ne quoter que ce qui peut poser de problème et de ne pas oublier 
les accolades pour référencer les variables.

Par exemple, si la variable contenant un nom de répertoire contenant des blancs 
est "Rep" et qu'on veut effectuer une boucle "for" avec. Plutôt que d'écrire 
dans ton shell :
for i in ${Rep}/* ; do
echo "${i}"
done
qui donne n'importe quoi, il fait écrire :
for i in "${Rep}"/* ; do
echo "${i}"
done

Si j'ai pris ce cas du "for", c'est que "${Rep}/*" n'est pas la même chose que 
le "${Rep}"/* utilisé.

Sinon, tu peux essayer une série de "sed" pour remplacer les caractères visés. 
Mais il faut tous les connaître et ... as-tu pensé aux accents ? Un truc du 
genre :
Rep="$(echo ${Rep} | sed -e 's/ /\\ /g' -e "s/\'/\\\'/g")"
Ça marche puisque l'expression est toujours instanciée de droite à gauche.
Tu remarqueras que j'ai utilisé le double guillemet (") à la place du simple 
(') dans la deuxième instance du "sed". Sinon, il y a ambiguité dans les 
séparateurs dans l'exécution de la commande.

En espérant que ça peut t'aider...


   «La façon de donner vaut mieux que ce que l'on donne»
Pierre Corneille (1606-1684) - Le menteur
   |\  _,,,---,,_
   /,`.-'`'-.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)


BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Address Book 6.1//EN
N:Malard;Pierre;;;
FN:Pierre Malard
ORG:IRD Montpellier;
TITLE:Ingénieur Réseau
EMAIL;type=INTERNET;type=WORK:p...@teledetection.fr
EMAIL;type=INTERNET;type=WORK:pierre.mal...@ird.fr
TEL;type=WORK;type=VOICE;type=pref:+33 467 54 87 06
TEL;type=CELL;type=VOICE:+33 677 56 26 51
TEL;type=WORK;type=FAX:+33 467 54 87 00
item1.TEL:+33 467 54 87 54
item1.X-ABLabel:Standard
item2.ADR;type=WORK;type=pref:;;500 rue Jean-François Breton;MONTPELLIER Cx 5;;34093;France
item3.ADR;type=HOME:;;Frouzet;SAINT MARTIN DE LONDRES;;34380;France
item3.X-ABADR:fr
item4.URL:navigonFRA://-%7CPierre%20Malard%7CFRA%7C17260%7CMONTPELLIER-DE-M%C3%89DILLAN%7C-%7C-%7C-%7C-%7C***%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-%7C-
item4.X-ABLabel:Navigon bureau
URL;type=WORK:http://web.me.com/plm4/Site_Professionnel_de_Pierre_Malard/Bienvenue.html
BDAY;value=date:1958-05-10
X-AIM;type=HOME;type=pref:pierremalard
X-MSN;type=HOME;type=pref:plm_...@teledetection.fr
X-ICQ;type=HOME;type=pref:piotrplm
IMPP;X-SERVICE-TYPE=AIM;type=HOME;type=pref:aim:pierremalard
IMPP;X-SERVICE-TYPE=MSN;type=HOME:msnim:plm_...@teledetection.fr
IMPP;X-SERVICE-TYPE=ICQ;type=HOME:aim:piotrplm
IMPP;X-SERVICE-TYPE=Skype;type=WORK:skype:piotrplm
PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4in0SUNDX1BST0ZJTEUA
 AQEAACnkYXBwbAIQAABtbnRyUkdCIFhZWiAH2gALAAoAFwAHABhhY3NwQVBQTA
 AA9tYAAQDTLWFwcGwA
 ABFkZXNjAAABUGhkc2NtAAABuDZjcHJ0AAAB8A
 AAANB3dHB0AAACwBRyWFlaAAAC1BRnWFlaAAAC6BRiWFlaAAAC/BRyVFJD
 AAADEAAACAxhYXJnAAALHCB2Y2d0AAALPAAABhJuZGluAAARUAAAGD5jaGFkAAApkC
 xtbW9kAAApvChiVFJDAAADEAAACAxnVFJDAAADEAAACAxhYWJnAAALHCBhYWdnAAAL
 HCBkZXNjAA5pTWFjIGV0YWxvbm5lAA
 AAAG1s
 dWMAAQxmckZSGgAAABwAaQBNAGEAYwAgAOkAdABhAGwAbwBuAG4A6QAAdG
 V4dABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTAA
 AA
 AA
 AFhZWiDzlAABAA
 AAAVg5WFlaIHAyAAA7MgAAAXhYWVogX/QAAK3FAAARwlhZWiAm
 sAAAFwkAAL/zY3VydgQABQAKAA8AFAAZAB4AIwAoAC0AMgA2ADsAQABFAEoATw
 BUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDb
 AOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAY
 sBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB

[Un peu HS] Fonction de protection de blancs et d'autres caractères...

2012-04-27 Par sujet David BERCOT
Bonjour,

Dans un script, je travaille sur des fichiers qui ont, dans leurs noms
complets (répertoire + nom de fichier), des blancs et d'autres
caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
certains traitements.

Je me demandais s'il existait une fonction de base qui permette de
transformer le nom initial en nom... utilisable. Par exemple,
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De/*.vmdk
serait transformé en
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]

Si vous avez une piste, je suis preneur (dans mon exemple, il y a à la
fois des blancs et une apostrophe, mais j'imagine qu'il existe d'autres
caractères bizarres).

Merci.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20120427170726.634300d0@debian-david