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   

这怎么行?

我的印象是,在执行命令之前,shell 会扩展 glob 模式。

我的理解不正确吗?

4

2 回答 2

5

你的理解是正确的。但:

您的本地 shell 无法展开remote.machine:/var/log/sy*,因为您没有这样的文件(可能;当前文件夹中包含文件remote.machine:的子目录树的目录非常罕见。var/log/sy*

因此,您的 shell 将字符串提供给scp未扩展的字符串,后者将其交给远程系统,后者解析并使用它。

于 2013-03-28T09:56:38.270 回答
3

如果 shell 没有找到匹配项,它会保留星号。由于您没有文件remote.machine:/var/log/sy,因此无需扩展任何内容,因此星号将保留并传递到远程计算机。

于 2013-03-28T09:59:41.767 回答