Linux bash/scp是如何扩展的;“远程”;全球模式?
如果我执行(在bash中): 我在远程计算机上获取所有与/var/log/sy*匹配的文件 这怎么行 我的印象是,glob模式是在命令执行之前由shell扩展的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,后者将其交给远程系统,由远程系统进行
我的理解不对吗 你的理解是正确的。但是: 您的本地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