
Esto es lo que intenté.
inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")
Hice la sed
operación para reemplazar los espacios en blanco con un \
y un espacio en blanco para que el comando de copia funcione. Luego, desde la GUI de selección de archivos de Zenity, elegí un archivo para que el valor dentro inputFile
sea /home/username/Documents/Learning\ and\ Development/testfile.txt
.
Ahora, cuando intento copiar este archivo a mi directorio de trabajo con
cp $inputFile .
Aún así devuelve el error,
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
¿Hay alguna forma de evitarlo? En realidad estoy escribiendo un programa. Por eso no quiero decirles a los usuarios que cambien el nombre de sus carpetas para evitar espacios.
Respuesta1
Puedes hacer el truco fácilmente, encerrándolo entre comillas dobles:
cp "$inputFile" /destination/
Encerrar caracteres entre comillas dobles ('"') conserva el valor literal de todos los caracteres entre comillas, con la excepción de '$', '`', '\'. Leer más:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
Respuesta2
puedes agregar * donde apareció el espacio y la copia se puede hacer como
cp /home/user/users*tst.txt /home/user/Downloads
donde desea copiar el tst.txt de los usuarios a la carpeta Descargas desde la carpeta de inicio