C'est ce que j'ai essayé.
inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")
J'ai effectué l'opération sed
pour remplacer les espaces vides par un \
et un espace pour que la commande de copie fonctionne. Ensuite, dans l'interface graphique de sélection de fichiers Zenity, j'ai choisi un fichier tel que la valeur à l'intérieur de inputFile
soit /home/username/Documents/Learning\ and\ Development/testfile.txt
.
Maintenant, quand j'essaie de copier ce fichier dans mon répertoire de travail avec
cp $inputFile .
Il retourne toujours l'erreur,
cp: cannot stat ‘/home/user/Documents/Learning\\’: No such file or directory
cp: cannot stat ‘and\\’: No such file or directory
cp: cannot stat ‘Development/WhatsApp.apk’: No such file or directory
Y at-il un moyen de contourner cela? En fait, j'écris un programme. Donc, je ne veux pas dire aux utilisateurs de renommer leurs noms de dossiers pour éviter les espaces.
Facilement, vous pouvez faire l'affaire, entourez par des guillemets:
cp "$inputFile" /destination/
Les caractères entre guillemets ("" ") conservent la valeur littérale de tous les caractères entre guillemets, à l'exception de" $ "," ","\", en savoir plus: http: // www. gnu.org/software/bash/manual/html_node/Double-Quotes.html
vous pouvez ajouter * où l'espace est apparu et la copie peut être faite comme
cp /home/user/users*tst.txt /home/user/Downloads
où vous voulez copier les utilisateurs tst.txt dans le dossier Téléchargements depuis le dossier de départ