
私が試してみたのはこれです。
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をホームフォルダからダウンロードフォルダにコピーする場所