scpが「該当するファイルがありません」と言うのはなぜですか?

scpが「該当するファイルがありません」と言うのはなぜですか?

scp私のコンピュータから別のコンピュータにファイルをコピーするbashスクリプトがあります。 SSHパスワードを入力した後も、スクリプトは次のエラーで終了し続けます。

<filename>: No such file or directory

しかし、スクリプトでファイルを確認しましたが、すべてが正常です。私はset -o verbose 最初に次のことを行いましたが、これがスクリプトの終わりから得られました。

scp /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4 [email protected]:"/media/3TB/TV\ Shows/NCIS"
[email protected]'s password:
/Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4: No such file or directory

そのため、コマンドを出力として実行してみたので、scp正常にコピーされました。何が間違っていますか? ? ?

答え1

私はあなたが何をしているのか完全にはわかりませんが、あなたの例でコマンドを試してみると、次のような結果が得られます。

$ scp /home/saml/projects/Cooks.com\ -\ Recipe\ -\ Coconut\ Chicken.mht \
       root@remotey:"/root/some spaced out file.mht"
scp: ambiguous target

これは、ターゲットパスを引用し、そこにスペースをエスケープするバックスラッシュも含まれているためです。ただし、現在のシェルが二重引用符を削除すると、単一のバックスラッシュも削除され、ターゲットパスがスペースを含む文字列として残ります。スペースが正しくエスケープされるようにさらに入れ子にするには、次のいずれかを実行する必要があります。

はい

方法 #1 - 二重引用符、一重引用符

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:"'/home/user/some spaced out file.txt'"

方法 #2 - 一重引用符、二重引用符

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:'"/home/user/some spaced out file.txt"'

方法 #3 - 一重引用符、バックスラッシュ

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:'/home/user/some\ spaced\ out\ file.txt'

方法 #4 - 二重引用符、バックスラッシュ

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:"/home/user/some\ spaced\ out\ file.txt"

方法 #5 - トリプルバックスラッシュ

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:/home/user/some\\\ spaced\\\ out\\\ file.txt

関連情報