我在远程有remote_host
一个这样的文件:
\home\user\path with spaces\filename with spaces.ext
我想scp
将其移至当前目录.
。我该怎么做?
谢谢!
答案1
经过一番调查,我发现了这两个选项:
scp 'user@remote_host:"/home/user/path with spaces/filename with spaces.ext"' .
和
scp 'user@remote_host:/home/user/path\ with\ spaces/filename\ with\ spaces.ext' .
我希望它也对你有帮助!
玩得开心!
编辑 - openssh 已更新了一项安全功能,该功能会导致路径名中出现某些字符时出现错误消息“协议错误:文件名与请求不匹配”。在这种情况下,使用 scp 的新-T
选项将允许它工作。例如
scp -T 'user@remote_host:"/home/user/path with spaces/filename with spaces and (2018).ext"' .
答案2
您有两个选择。
选项一:输入空格为“\”。例如;/home/matthew/File\ With\ Spaces.file
。
选项二:在撇号单引号中输入路径,如下所示:'/home/matthew/File With Spaces.file'
。
如果您使用制表键(Tab)自动完成文件名,它将自动插入“\”,但是您需要使用公钥认证才能在远程主机上工作。
答案3
对我来说,通过 scp 从远程 Windows 主机(Windows 10)复制到本地 Centos 8 机器:用 ? 代替空格,并用引号括起来:例如:scp[电子邮件保护]:“d:/downloads/sample?data/复制?.csv”。 (最后一个 . 表示 Linux 上的当前目录)。我在 Windows 机器上有一个带空格的路径和多个带空格的 csv 文件,所以我使用复制?如上所示。
答案4
试试这个我的朋友。
defstr PathAndFileName$
defstr Sheller$
PathAndFileName$="'c:\Documents And Settings\Users\Desktop\File.ext'"
Sheller$="scp 'user@remote_host:PathAndFileName$'"
Shell Sheller$
或者
run "scp user@remote_host:PathAndFileName$"
您必须将任何路径或文件名放在引号中,否则 scp 会将空格后的任何内容视为选项或命令。