linux 命令 空格转义,关于unix:如何在Linux中的scp复制期间转义路径中的空格?...

我是Linux新手,我想把一个文件从远程复制到本地系统…现在我在Linux系统中使用scp命令。我有一些文件夹或文件名带有空格,当我试图复制该文件时,它会显示错误消息:"没有这样的文件或目录"

我试过:

scpael5105@192.168.0.200:'/home/5105/test/gg/UntitledFolder/a/qy.jpg'/var/www/try/

我在网上看到了一些参考资料,但我不完全理解,有人能帮我吗?

如何在复制过程中转义文件名或目录名中的空格…

不工作!!已经开始了……

再次检查文件是否确实存在。在整个路径周围加上引号,包括登录名和IP地址。或者,远程引用并用反斜杠代替空格。

基本上,你需要逃出两次,因为它是在本地逃出的,然后在远端逃出的。

您可以(在bash中)执行以下几个选项:

scpuser@example.com:"'web/tmp/MasterFile181013.xls'".

scpuser@example.com:"web/tmp/Master\File\18\10\13.xls".

scpuser@example.com:web/tmp/Master\\\File\\\18\\\10\\\13.xls.

这是一个很小的问题,但是在Mac和终端等大多数控制台应用程序中,都有一个"粘贴转义文本"选项。因此我使用了第二个选项。

这里有一个相关的问题:stackoverflow.com/questions/5608112/…

谢谢,这似乎有违直觉…

当"path"失败时,"path"工作;先结束单引号,然后结束双引号

真的!这可能是我见过的最荒谬的节目行为!

@简克斯,这不是没有优点的。事实上,您所放置的shell命令参数允许您执行诸如scp user@example.com:'$(ls -t | head -1)' .之类的操作以获取服务器中最近创建的文件,或者scp user@example.com:'dir/*.{xml,pdf}' .从远程目录获取所有XML和PDF文件。一般来说,我更喜欢这种方式,而不是使用有空间的文件。带有空格的文件总是很麻烦。

为什么要逃跑两次?有什么方法可以改变这种行为吗?

作品

scplocalhost:"f/a\b\c".

scplocalhost:'f/a\b\c'.

不工作

scplocalhost:'f/abc'.

原因是,在将路径传递给scp命令之前,shell会对字符串进行解释。因此,当它到达远程时,远程程序正在寻找一个带有未转义引号的字符串,但失败了。

若要查看此操作,请使用-vx选项(即EDOCX1[0])启动shell,它将在运行命令时显示该命令的内插版本。

使用单引号和转义对我有效,但不是双引号

@Mauriciotrajano看看gnu.org/software/bash/manual/html_node/quoting.html所有的引号都有不同的功能。在上述简单情况下,双"或单'的工作原理相同。

此外,您还可以执行以下操作:

scpfoo@bar:""apath/withspacesinit/""

第一级引号将由SCP解释,第二级引号将保留空格。

考虑到使用相同数量的转义字符可以处理多少空格,该答案的评级过低。谢谢!

使用3个反斜杠来转义目录名称中的空格:

scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads

应该从名为directory with spaces的远程目录复制file到您的Downloads目录。

我很难让它适用于包含带有空格的文件名的shell变量。结果发现使用

file="foobar/baz"

scpuser@example.com:"'$file'"

正如@adrian的答案似乎是失败的(尝试在上述命令之前输入set -x,看看shell是如何解释这个字符串的;这是非常不可靠的,我不太明白它为什么会失败)。

结果发现,最有效的方法是使用参数扩展来在空白前加上反斜杠,如下所示。

file="foobar/baz"#afileinsideadirectory-namewithwhitespace

file="${file//\/\\\}"#the`//`replacesallinstances;`/`justreplacesthefirst

scpuser@example.com:"$file"

我建议更稳健的"全部替代"扩张:file="${file//\ /\\\ }"

忘记了这一区别——我对参数扩展感到生疏。谢谢!

我没有一个变量,但这让我很满意,对于一条有很多空间的路径,它可以作为3个反斜杠的好选择。没有人有时间去做!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值