Isso é interessante. As outras respostas que estou vendo estão dizendo para você trocar sua cota de escape e espaço de escape para uma string entre aspas. Na verdade, eles são equivalentes, então você não verá nenhuma alteração ( a\'\ b
é o mesmo para o shell como "a' b"
).
O problema aqui está no modo como scp
no sistema remoto interpreta a linha de comando que está sendo fornecida.
Como exemplo, isso funcionaria:
scp John\'s\ folder/file localhost:/tmp/dst
Mas isso falharia:
scp localhost:/tmp/src/John\'s\ folder/file /tmp/dst
(Eu usei localhost
para o exemplo; você deve usar user@host
para sua situação.)
Se você incluir o sinalizador -v
( verbose ) em scp
, poderá ver exatamente o que está acontecendo que dá origem à falha:
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
A solução infeliz aqui é que você precisa escapar de caracteres especiais (incluindo espaço em branco) duas vezes - uma vez para o shell local e uma vez para o shell remoto:
scp localhost:"/tmp/src/John\'s\ folder/file" /tmp/dst