Это - то, что я попробовал.
inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")
Я сделал sed
операция для замены пробелов a \
и пробел, чтобы заставить копирование управлять для работы. Затем от выбора файла Zenity GUI я выбрал файл так, чтобы значение внутри inputFile
/home/username/Documents/Learning\ and\ Development/testfile.txt
.
Теперь, когда я пытаюсь скопировать этот файл в свой рабочий каталог с
cp $inputFile .
Тем не менее это возвращает ошибку,
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
Там какой-либо путь состоит в том, чтобы обойти это? На самом деле я пишу программу. Таким образом, я не хочу говорить пользователям переименовывать свои имена папок для предотвращения пробелов.
Легко можно добиться цели, включить двойными кавычками:
cp "$inputFile" /destination/
символы Включения в двойных кавычках (†"’) сохраняет литеральное значение всех символов в кавычках, за исключением †$’, †'’, †\’, Читать дальше http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
можно добавить *, где пространство появилось, и копия может быть сделана как
cp /home/user/users*tst.txt /home/user/Downloads
, где Вы хотите скопировать пользователей tst.txt в папку Downloads от домашней папки