
Isso é o que eu tentei.
inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")
Fiz a sed
operação para substituir os espaços em branco por um \
e um espaço em branco para fazer o comando de cópia funcionar. Então, na GUI de seleção de arquivos do Zenity, escolhi um arquivo para que o valor interno inputFile
seja /home/username/Documents/Learning\ and\ Development/testfile.txt
.
Agora, quando tento copiar este arquivo para meu diretório de trabalho com
cp $inputFile .
Ainda assim retorna o erro,
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
Existe alguma maneira de contornar isso? Na verdade, estou escrevendo um programa. Portanto, não quero dizer aos usuários para renomearem os nomes das pastas para evitar espaços.
Responder1
Facilmente você pode fazer o truque, coloque entre aspas duplas:
cp "$inputFile" /destination/
Colocar caracteres entre aspas duplas ('"') preserva o valor literal de todos os caracteres entre aspas, com exceção de '$', '`', '\', Leia mais:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
Responder2
você pode adicionar * onde o espaço apareceu e a cópia pode ser feita como
cp /home/user/users*tst.txt /home/user/Downloads
onde você deseja copiar os usuários tst.txt para a pasta Downloads da pasta inicial