我是linux的新手,我想将文件从远程复制到本地系统...现在我在linux系统中使用scp命令..我有一些文件夹或文件名是带空格的,当我尝试复制时文件,它显示错误消息:“没有这样的文件或目录”
我试过了:
scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
我在网上看到了一些参考资料,但我不完全理解,有人可以帮忙吗?
如何在复制过程中转义文件名或目录名中的空格...
5 回答
你也可以这样做:
第一级引号将由scp解释,然后第二级引号将保留空格 .
基本上你需要两次逃避它,因为它在本地转义然后在远程端转义 .
你可以做几个选项(在bash中):
作品
不起作用
原因是在将路径传递给scp命令之前,shell会解释该字符串 . 因此当它到达远程时,远程正在查找带有未转义引号的字符串,但它失败了
要查看此操作,请使用-vx选项(即
bash -vx
)启动一个shell,它将在运行命令时显示该命令的插补版本 .我很难让这个包含带有空格的文件名的 shell variable 工作 . 事实证明,使用
就像@Adrian的回答似乎失败了(尝试在上面的命令之前输入
set -x
来看看shell如何解释这个字符串;它非常难以理解,我真的不明白为什么它会失败) .事实证明,最好的方法是使用参数扩展到 to prepend backslashes to the whitespace ,如下所示 .
使用3个反斜杠来转义目录名称中的空格:
scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads
应该从名为
directory with spaces
的远程目录中将file
复制到Downloads
目录 .