ファイルをコピーしようとしたときにscpエラーが発生しました。

ファイルをコピーしようとしたときにscpエラーが発生しました。

私はscpAndroidデバイスからMacBookにファイルを頻繁に転送しますが、これは本当に魅力的です。しかし、John's folder私のMacBookにはフォルダというフォルダがあるので、そのディレクトリにファイルをコピーしようとすると、次のようになります。 scp [email protected]:/Users/macbook/desktop/John\'s\ folder/file storage/folder

エラーが返されます

unexpected EOF error while looking for matching \`’\`

そして

unexpected end of file

この問題をどのように解決できますか?

ベストアンサー1

〜のようにOpenSSH バージョン 9.02022-04-08に公開されたこのscpプログラムは、SFTPプロトコルを直接使用します。したがって、元の質問はもう存在しないため、この回答の残りの部分はもう必要ありません。

以前のバージョンのSCPを使用しているscp場合、または以前のSCPプロトコルに戻したい場合は、scp -O答えはまだ適用されます。

元の答えは以下にあります。


興味深いです。私が見た他の答えは、エスケープされた引用符とエスケープされたスペースを引用符で囲まれた文字列に置き換えるように指示します。実際は同じなので、変更は表示されません(a\'\ bシェルと同じ"a' b")。

scpここで問題はリモートシステム与えられたコマンドラインを解釈します。

たとえば、次のように動作します。

scp John\'s\ folder/file localhost:/tmp/dst

しかし、これは失敗します。

scp localhost:/tmp/src/John\'s\ folder/file /tmp/dst

localhost(例として使用したので、user@host状況に合わせて使用​​してください。)

-v言葉が多い) フラグを使用すると、scp障害の原因を正確に確認できます。

debug1: Sending command: scp -v -f /tmp/src/John's folder/file
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file

ここで不幸な解決策は、特殊文字(スペースを含む)を2回(ローカルシェルで1回、リモートシェルで1回)エスケープする必要があることです。

scp localhost:"/tmp/src/John\'s\ folder/file" /tmp/dst

おすすめ記事