Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Appel à contributeurs pour la doc.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 24/12/2016, à 10:18

fnux

[Résolu] Problème du caractère espace avec find, chmod et chown?

Bonjour,

Dans le cadre du script d'installation multi-lingues de l'IDE QB64 que j'ai écrit, je dois, à la demande de l'utilisateur, céer un lanceur de QB64 sur son bureau.

Ce script est aussi destiné à désinstaller QB64 proprement.

La création de ce lanceur est faite par la série de commandes suivantes :

MYUSERNAME="fnux" ### ou votre nom d'utilisateur
DESKTOP_NAME="Desktop" ### ou le nom approprié de la langue utilisée
cp /opt/qb64/qb64.desktop "/home/$MYUSERNAME/DESKTOP_NAME/" ### jusque là, ça va, le starter est créé
chmod +x "/home/$MYUSERNAME/$DESKTOP_NAME/qb64.desktop" ### là dans un cas précis ça coince
chown $MYUSERNAME:root /home/$MYUSERNAME/$DESKTOP_NAME/qb64.desktop ### et là aussi

Pour supprimer ce lanceur, je commence par rechercher s'il existe par et s'il est présent je fais simplement un rm :

QB64_STARTER=$(find /home/$MYUSERNAME/$DESKTOP_NAME -type f name "qb64.desktop" | wc -l) ### mais là, dans le même cas précis le starter n'est pas détecté
if [ "$QB64_STARTER" != 0 ]
  then
    rm -R "/home/$MYUSERNAME/$DESKTOP_NAME/qb64.desktop" ### et là, dans ce cas précis le starter n'est pas supprimé.
fi

Cela se passe très bien en Anglais, Allemand, Espagnol, Français, Italien ou Russe dans la mesure où le nom du dossier "Desktop" n'est traduit que par un seul mot comme par exemple en français "Bureau" ou en espagnol "Escritorio"  ou encore en Allemand "Schreibtisch" etc. etc. etc.

Mais là où j'ai un problème est avec les langues dans les quelles le nom du bureau est traduit en plusieurs mots: exemple en portugais le mot "Desktop" est traduit par "Área de Trabalho".

En effet, lorsque je crée le lanceur, il est bien créé sur le bureau mais j'obtiens les messages suivants pour chmod et chown :

chmod: nao e possivel acessar '/home/fnux/Área' : Arquivo ou diretorio nao encontrado
chmod: nao e possivel acessar 'de' : Arquivo ou diretorio nao encontrado
chmod: nao e possivel acessar 'Trabalho/qb64.desktop' : Arquivo ou diretorio nao encontrado
chown: nao e possivel acessar '/home/fnux/Área' : Arquivo ou diretorio nao encontrado
chown: nao e possivel acessar 'de' : Arquivo ou diretorio nao encontrado
chown: nao e possivel acessar 'Trabalho/qb64.desktop' : Arquivo ou diretorio nao encontrado

Et lorsque je veux supprimer ce lanceur (et il est bien présent) j'obtiens les messages suivants pour find :

find: "/home/fnux/Área ": Arquivo ou diretorio nao encontrado
find: "de": Arquivo ou diretorio nao encontrado
find: "Trabalho": Arquivo ou diretorio nao encontrado

Et le lanceur n'est pas supprimé alors qu'il est bien présent mais qu'il n'a pas été détecté !

Manifestement, le nom "Área de Trabalho" est découpé en trois mots différents "Área" puis "de" et enfin "Trabalho" ce qui implique l'impossibilité des commandes chmod, chown et find de s'exécuter comme je le souhaite.

J'ai essayé de placer le nom 'Área de Trabalho' entre de simples cotes mais le résultat est le même.

Que dois-je faire pour que ces 3 mots ne composent qu'un seul et unique nom et qu'il puisse être traité par chmod, chown et find ?

Merci d'avance de votre aide car je suis vraiment coincé.

Cordialement et joyeuses fêtes de Noël.

PS: ce script disponible en Anglais, Français, Allemand, Russe et Portugais est disponible ici : http://www.as2.com/qb64/index.html

Dernière modification par fnux (Le 24/12/2016, à 11:09)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The Froggies West Palm Beach Linux Association.

Hors ligne

#2 Le 24/12/2016, à 10:44

Brunod

Re : [Résolu] Problème du caractère espace avec find, chmod et chown?

Remplacer l'espace par un échappement espace en précédant l'espace d'un \
Bonnes fêtes.
Voir ici par exemple :
https://forum.ubuntu-fr.org/viewtopic.php?id=346843

Dernière modification par Brunod (Le 24/12/2016, à 10:49)


Wanted : emploi dans la sécurité informatique et réseau
Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
37 pc linux convertis

Hors ligne

#3 Le 24/12/2016, à 10:49

Anonyme68

Re : [Résolu] Problème du caractère espace avec find, chmod et chown?

On peut mettre des doubles guillemets (") autour des arguments pouvant avoir des espaces

exemple :

chown $MYUSERNAME:root "/home/$MYUSERNAME/$DESKTOP_NAME/qb64.desktop" ### et là aussi
QB64_STARTER=$(find "/home/$MYUSERNAME/$DESKTOP_NAME" -type f name "qb64.desktop" | wc -l) ### mais là, dans le même cas précis le starter n'est pas détecté

846/2381 jeux linux sur Steam

Hors ligne

#4 Le 24/12/2016, à 11:08

fnux

Re : [Résolu] Problème du caractère espace avec find, chmod et chown?

@Brunod et @Anonyme68.

Il y a des jours où je ferai mieux d'aller jouer à la pétanque plutôt que d'écrire du sh car je le savais mais je l'avais complètement oublié.

Donc, un grand Merci à vous deux pour ces deux solutions qui effectivement règlent mon problème.

Merci encore et joyeuses fêtes de Noël.


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The Froggies West Palm Beach Linux Association.

Hors ligne