Script bash: jocker et espaces dans un nom de fichier

Bonjour,
Bonjour je me heurte désespérément à ce problème:
Pour créer un script de sauvegarde de mon téléphone android, je dois utiliser le nom de chemin suivant (que je ne peux évidemment pas modifier):
/run/user/*/gvfs/*/Espace\ de\ stockage\ interne\ partagé/

Pour le chemin:
/run/user/*/gvfs/*/disk j’y parviens, par exemple avec la commande suivante:
OCTETSATTENDUS=$(du -s $REP_SOURCE_DISQUE | cut -f1)
ça fonctionne si je ne mets pas les « guillemets » autour de $REP_SOURCE_DISQUE .

Pour le nom à trou, j’ai essayé en vain avec ou sans guillemets, avec ou sans antislash devant les blancs et autres bizarreries de mec perdu dans un épais brouillard bashique (ivresse numérique sans alcool! :wink: )

Je suppose qu’il existe une solution.

Utilises plutot:

REP_SOURCE_DISQUE='/run/user/*/gvfs/*/Espace de stockage interne partagé/'
OCTETSATTENDUS=`du -s "${REP_SOURCE_DISQUE}" | cut -f1)`

Merci Zargos, la solution est bien dans votre

mais la deuxième ligne ne fonctionne toujours pas:

REP_SOURCE_INTERNE='/run/user/*/gvfs/*/Espace de stockage interne partagé/'
OCTETSATTENDUS=`du -s "${REP_SOURCE_INTERNE}" | cut -f1`
echo "$REP_SOURCE_INTERNE contient $OCTETSATTENDUS"

Affiche:

/run/user/*/gvfs/*/Espace de stockage interne partagé/ contient

variable vide, avec message d’erreur suivant:

du: impossible d'accéder à '/run/user/*/gvfs/*/Espace\ de\ stockage\ interne\ partagé/': Aucun fichier ou dossier de ce type

ou:

du: impossible d'accéder à '/run/user/*/gvfs/*/Espace de stockage interne partagé/': Aucun fichier ou dossier de ce type

selon la façon dont la variable a été affectée (" ...\ ..." ou '... ...')

Finalement, le résultat (l’affichage) est strictement identique que la 1ere ligne soit de la forme:
'/run/user/*/gvfs/*/Espace de stockage interne partagé/'
ou de la forme:
"/run/user/*/gvfs/*/Espace\ de\ stockage\ interne\ partagé/"

et la deuxième de la forme ... ou de la forme $(…)

[PS] pareil sans le « | cut -f1 »

Une question: le chemin avec des * est correctement géré, avec un nom de base sans trou (disk).

Existe-il une façon de transcrire ce chemin avec son nom réel, sans * ?

Est-ce que cette différence pourrait être partie du problème de nom à trou?

non il y a une erreur, il manque les back quote (ALTGR 7) en debut et fin du membre droit de l’égalité.

erreur de copie, en vrai ils y sont.

ceci dit normalement il ne devrait pas y avoir de /*/ dans ton répertoire.

Cette syntaxe est dépréciée, je te conseille plutôt celle-ci (qui est plus claire et emboîtable au besoin) :

OCTETSATTENDUS=$(du -s "${REP_SOURCE_INTERNE}" | cut -f1)

Binjour

Pour le début du nom du lien, tu peux remplacer :

/run/user/*/gvfs

par :

$XDG_RUNTIME_DIR/gvfs

et puisque il s’agit de ton smartphone, l’étoile qui est dans la suite :

gvfs/*/Espace de stockage interne partagé/

peut facilement être remplacée par les références exactes relatives au protocole utilisé et aux références de ton smartphone qui ne changeront pas puisque ce sera toujours le même smartphone,

et finalement, ça donnerait un truc
qui ressemblerai à ce qui suit :

"$XDG_RUNTIME_DIR/gvfs/mtp:host=QUALCOMM_BENGAL-IDP__SN%3A5B883CD4_254253BA/Espace de stockage interne partagé/"

Pardon, j’ai lu en diagonale, je n’ai pas percuté ce que tu veux faire.
Je vois que tu veux sauvegarder le stockage interne partagé de la machine sous Android, mail il y a des façons tellement plus simples de faire ça. Tu peux utiliser Syncthing ou Termux, par exemple. En plus, si tu te débrouilles bien, tu peux faire en sorte que les sauvegardes se fassent sans que tu aies besoin de connecter ton téléphone à ton ordinateur.
Ce sera plus fiable que la méthode que tu utilises, probablement à base de MTP (ou un truc du genre).

Oui, d’accord, mais le résultat est identique (j’ai essayé à tout hasard, car j’avais même oublié que cette syntaxe avait existé)

Oui, c’est pourquoi je cherche aussi la façon de préciser le bon chemin, sans «jocker», en partant de celui-ci.

Merci, ce sont des techniques que je dois aussi apprendre, mais je veux surtout (aussi) faire mes sauvegardes sans passer par les réseaux, via USB.

Merci beaucoup, je crois que ces pistes répondent très précisément à la question des «*». (et élargissent la conscience du champs pourtant vaste de mon ignorance)

Avec toute votre aide, voici la syntaxe qui fonctionne:

REP_SOURCE_RACINE="${XDG_RUNTIME_DIR}"'/gvfs/mtp:host=Fairphone_Fairphone_4_5G_3109c937/Espace de stockage interne partagé/'

et avec toute ma gratitude.

1 Utilisation de la variable XDG_RUNTIME_DIR, donc entre guillemets
2 Utilisation des apostrophes pour le chemin sans jocker mais avec espaces
3 donc, concaténation de ces 2 chaînes affectée à la variable.