¿Cómo puedo escapar de los espacios en la ruta para la copia scp en Linux?
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?
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'" .
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 -vx
y mostrará la versión interpolada del comando a medida que lo ejecuta.