
Para enviar un archivo desde una terminal Linux a un sistema Windows, los dos ejemplos siguientes funcionan bien.
scp /home/user.name/file.html [email protected]:/C:/Users/user.name/test_folder/file.html
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test_folder/file.html"
Necesito hacer esto donde la carpeta local tiene espacios y no puedo cambiar el nombre, digamos/C:/Users/user.name/test folder/
Todo lo siguiente falla con el mensajescp: ambiguous target
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test folder/file.html"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\ folder/file.html'"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\\ folder/file.html'"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\\\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\\\ folder/file.html'"
¿Cómo hago para que esto funcione?
Respuesta1
Intenta usar
quotes '
oDouble quotes "
alrededor de un argumento completo.Como lo sugiere @dirkt en los comentarios. Citar el argumento de ruta completo para el host ssh debería funcionar. Eso hace que tu comando sea así:
scp /home/user.name/file.html '[email protected]:/C:/Users/user.name/test folder/'
Usar
escape sequence for space
entre el nombre de la carpeta.Puede utilizar
\
(barra invertida con un espacio), que es una secuencia de escape para un espacio. Eso hace que tu comando sea así:scp /home/user.name/file.html '[email protected]:/C:/Users/user.name/test\ folder/'
Note el
\
con un espacio entre mediotest
yfolder
eso lo hacetest\ folder
.Tal vez sea el caso que tú
need to escape twice
ya que se escapa primero localmente y luego en el extremo remoto. En ese caso puedes escribir así:"'complete argument'"
comillas dentro de comillas dobles como esta:"'[email protected]:/C:/Users/user.name/test folder/'"
O
Escape los espacios y cite un argumento completo como este:
'[email protected]:/C:/Users/user.name/test\ folder/'
O
Escapar dos veces directamente usando una secuencia de escape como esta
[email protected]:/C:/Users/user.name/test\\ folder/
Siéntase libre de agregar más detalles.
Respuesta2
Probé todas las opciones anteriores para realizar scp desde el cliente CentOS a Windows 7 (SP1), pero sin éxito.
Sin embargo, este funcionó para mí:
$ scp /tmp/lala 'win7@<IP>:"/Users/win7/Documents/TestComplete 14 Projects"'
Respuesta3
No sé si esto sigue siendo relevante, pero una solución (que podría ser contraproducente en algunas situaciones) es usar "?" en lugar de espacio:
scp "user@ip:/home/user/file?with?spaces.txt" .
Respuesta4
El"El símbolo es interpretado por el propio bash. Bash decapsula cualquier cosa entre interbretes si puede y simplemente presenta la salida a un comando que se llama como una cadena que puede tener algunos símbolos especiales. Intente utilizar el apóstrofe (') porque obliga a bash a no mirar la cadena en absoluto y simplemente pasarla a un comando que se invocó primero. Esas cuerdas con'debe tener el formato siguiente: Si quieres ver
no
echo $'dont\'t'