【问题标题】:How does bash/scp expand out "remote" glob patterns?bash/scp 如何扩展“远程”全局模式?
【发布时间】:2013-03-18 16:55:47
【问题描述】:

如果我执行(在 bash 中):

scp remote.machine:/var/log/sy* .

我在 remote 机器上获得了与 /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 模式。

我的理解不正确吗?

【问题讨论】:

    标签: linux bash exec glob


    【解决方案1】:

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

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

    因此,您的 shell 将字符串提供给 scp unexpanded,后者将其交给远程系统,远程系统对其进行解析和使用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-30
        • 2012-06-14
        • 2015-03-19
        相关资源
        最近更新 更多