这是我尝试过的。
inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")
我执行了sed
将空格替换为 和 的操作\
以使复制命令正常工作。然后从 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
有什么办法可以绕过这个问题吗?实际上我正在编写一个程序。所以我不想告诉用户重命名他们的文件夹名称以避免出现空格。
答案1
您可以轻松完成此操作,用双引号括起来:
cp "$inputFile" /destination/
将字符括在双引号('"')中会保留引号内所有字符的文字值,但 '$'、'`'、'\' 除外,阅读更多:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
答案2
您可以在出现空格的地方添加 *,然后复制即可
cp /home/user/users*tst.txt /home/user/Downloads
您要将用户 tst.txt 从主文件夹复制到下载文件夹