Re: [Un peu HS] Fonction de protection de blancs et d'autres caractères...
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...
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...
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...
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...
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