Linux bash/scp是如何扩展的;“远程”;全球模式?

Linux bash/scp是如何扩展的;“远程”;全球模式?,linux,bash,exec,glob,Linux,Bash,Exec,Glob,如果我执行(在bash中): 我在远程计算机上获取所有与/var/log/sy*匹配的文件 这怎么行 我的印象是,glob模式是在命令执行之前由shell扩展的 我的理解不对吗 你的理解是正确的。但是: 您的本地shell无法展开remote.machine:/var/log/sy*,因为您在当前文件夹中没有这样的文件(可能是remote.machine:,子目录树var/log/中包含sy*文件的目录非常罕见 因此,您的shell将字符串交给未展开的scp,后者将其交给远程系统,由远程系统进行

如果我执行(在bash中):

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

这怎么行

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


我的理解不对吗

你的理解是正确的。但是:

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


因此,您的shell将字符串交给未展开的
scp
,后者将其交给远程系统,由远程系统进行解析和使用。

如果shell未找到匹配项,则保留星号。由于您没有文件
remote.machine:/var/log/sy
,因此没有任何可展开的内容,因此星号将保留并传递给远程主机中国

scp remote.machine:/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