bash/scp如何扩展“远程”glob模式?

3
如果我在bash中执行以下命令:
scp remote.machine:/var/log/sy* .

我在远程机器上获取所有与/var/log/sy*匹配的文件。

syslog                                     100%   91KB  10.1KB/s   00:09    
syslog.1                                   100%  753KB  62.7KB/s   00:12    
syslog.2.gz                                100%   55KB   7.9KB/s   00:07    
syslog.3.gz                                100%   50KB   8.3KB/s   00:06   

这怎么可能实现呢?

我原本以为glob模式是在执行命令之前由shell扩展的。

那我的理解是不正确的吗?

2个回答

5
您的理解是正确的,但:
您的本地shell无法扩展`remote.machine:/var/log/sy*`,因为您没有这样的文件(可能性很大;在当前文件夹中有一个名为`remote.machine:`的目录,其子目录树`var/log/`包含`sy*`文件非常罕见)。
所以您的shell将字符串未展开地传递给`scp`,然后它会将其交给远程系统进行解析和使用。

3
如果 shell 没有找到匹配项,它会保留星号。因为你没有一个文件remote.machine:/var/log/sy可供扩展,所以星号会保持不变,并传递给远程机器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接