Scp
嘗試複製文件時出現 scp 錯誤
我
scp
用來將文件從我的 android 傳輸到我的 MacBook,這就像一個魅力。但是我的 MacBook 上有一個文件夾John's folder
,所以當我嘗試在該目錄中復製文件時scp macbook@192.168.0.3:/Users/macbook/desktop/John\'s\ folder/file storage/folder
它拋出一個錯誤
unexpected EOF error while looking for matching \`’\`
和
unexpected end of file
我該如何解決這個問題?
這很有趣。我看到的其他答案是告訴您將轉義的引號和轉義的空格換成帶引號的字元串。實際上它們是等價的,所以你不會看到任何變化(
a\'\ b
與 shell 相同"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
( verbose ) 標誌,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
這裡不幸的解決方案是您需要兩次轉義特殊字元(包括空格) - 一次用於本地 shell,一次用於遠端 shell:
scp localhost:"/tmp/src/John\'s\ folder/file" /tmp/dst