私はscp
Androidデバイスから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