¿Cómo puedo escapar de los espacios en la ruta para la copia scp en Linux?

Resuelto AlexPandiyan asked hace 10 años • 0 respuestas

Quiero copiar un archivo del sistema remoto al local. Ahora estoy usando el comando scp en el sistema Linux. Tengo algunas carpetas o archivos, los nombres están con espacios, cuando intento copiar ese archivo, muestra el mensaje de error: " No existe tal archivo o directorio ".

Lo intenté:

scp [email protected]:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/

Vi alguna referencia en línea pero no la entiendo perfectamente, ¿alguien puede ayudarme con esto?

¿Cómo puedo escapar de los espacios en el nombre del archivo o en los nombres del directorio durante la copia?

AlexPandiyan avatar Nov 08 '13 18:11 AlexPandiyan
Aceptado

Básicamente, necesitas escapar de él dos veces, porque se escapa localmente y luego en el extremo remoto.

Hay un par de opciones que puedes hacer (en bash):

scp [email protected]:"web/tmp/Master\ File\ 18\ 10\ 13.xls" .
scp [email protected]:web/tmp/Master\\\ File\\\ 18\\\ 10\\\ 13.xls .

Otra opción sólo funciona con versiones anteriores de OpenSSH y posiblemente con otros clientes:

scp [email protected]:"'web/tmp/Master File 18 0 13.xls'" .
Adrian Gunawan avatar Dec 03 '2013 23:12 Adrian Gunawan

obras

scp localhost:"f/a\ b\ c" .

scp localhost:'f/a\ b\ c' .

No funciona

scp localhost:'f/a b c' .

La razón es que el shell interpreta la cadena antes de pasar la ruta al comando scp. Entonces, cuando llega al control remoto, el control remoto busca una cadena con comillas sin escape y falla.

Para ver esto en acción, inicie un shell con las opciones -vx, es decir, bash -vxy mostrará la versión interpolada del comando a medida que lo ejecuta.

Vorsprung avatar Nov 08 '2013 13:11 Vorsprung