酷徒LOGO

在本地路径中,scp从远程Linux到带空格的本地 Windows


问题:

为了将文件从Linux终端推到 Windows 系统,下面的两个示例工作得很好。


scp/home/user.name/file.html user.name@local.ip.num:/C:/Users/user.name/test_folder/file.html



scp/home/user.name/file.html user.name@local.ip.num:"/C:/Users/user.name/test_folder/file.html"



在本地文件夹有空格的地方,我需要这样做,我不能更改 NAME,比如 /C:/Users/user.name/test folder/

下面的所有内容都失败了,消息 scp: ambiguous target


scp/home/user.name/file.html user.name@local.ip.num:"/C:/Users/user.name/test folder/file.html"



scp/home/user.name/file.html user.name@local.ip.num:"/C:/Users/user.name/test folder/file.html"



scp/home/user.name/file.html user.name@local.ip.num:"'/C:/Users/user.name/test folder/file.html'"



scp/home/user.name/file.html user.name@local.ip.num:"/C:/Users/user.name/test folder/file.html"



scp/home/user.name/file.html user.name@local.ip.num:"'/C:/Users/user.name/test folder/file.html'"



scp/home/user.name/file.html user.name@local.ip.num:"/C:/Users/user.name/test folder/file.html"



scp/home/user.name/file.html user.name@local.ip.num:"'/C:/Users/user.name/test folder/file.html'"



我怎么才能让这个工作?


回答 1:

  • 尝试在完整参数周围使用引号'或双引号"。

    就像 @dirkt 在引用中所建议的,引用ssh主机的完整路径参数应该完成工作。 你的命令如下所示:

    
    scp/home/user.name/file.html 'user.name@local.ip.num:/C:/Users/user.name/test folder/'
    
    
    
    
  • 使用 escape sequence for space 文件夹 NAME 之间的。

    你可以使用 ( 带空格的反斜杠) 作为空间的转义序列。 你的命令如下所示:

    
    scp/home/user.name/file.html 'user.name@local.ip.num:/C:/Users/user.name/test folder/'
    
    
    
    

    注意,在 test & folder 之间有一个空格,它使它成为test folder

  • 可能是你的情况need to escape twice 在本地,然后在远程端被转义。 在这种情况下,你可以像这样编写:

  • 双引号内的"'complete argument'",像这样的双引号:

    
    "'user.name@local.ip.num:/C:/Users/user.name/test folder/'"
    
    
    
    

    或者

  • 转义空格并引用完整的参数,如下所示:

    
    'user.name@local.ip.num:/C:/Users/user.name/test folder/'
    
    
    
    

    或者

  • 使用如下所示的转义序列直接转义两次

    
    user.name@local.ip.num:/C:/Users/user.name/test folder/
    
    
    
    

请随意添加更多细节。


回答 2:

"符号由bash本身解释。 如果可以的话,Bash会解除interbretes之间的任何内容,只是将outout呈现给一个被称为字符串的命令,该命令可能有一些特殊的符号。 尝试使用 apostrophe ( ' ) 符号for强制bash根本不查看字符串,只是将它传递给首先调用的命令。 具有的字符串应如下格式格式化: 如果你想看看

 
echo $'dont't'



 





Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷