For*_*une 0 shell git quoting wildcards
我正在完成这里的 git 教程:https : //try.github.io/levels/1/challenges/7
它说我必须在 *.txt 周围加上单引号。我以前在使用 linux 时没有见过这个,但认为它很奇怪。我还看到在使用 html 和 php 时使用单引号来确保按字面解释字符串而不是使用特殊字符。
这在 shell 中与您提到的其他语法中的相同。单引号字符串将被视为“字符串文字”(可以这么说)。
git add '*.txt'和之间的区别在于git add *.txt谁在对文件名进行模式匹配。
在 的情况下git add '*.txt',git正在做模式匹配。由于 shell 不会扩展字符串文字'*.txt',因此git add将使用单个参数*.txt. git然后与整个存储库中可用的文件名进行匹配(因为... git)。
在 的情况下git add *.txt,shell 会进行文件名匹配,并将匹配文件名的列表从当前目录传递到git add. 请注意,如果没有与给定模式匹配的名称,shell 将(通常为1)将该模式传递给git addunexpanded。如果发生这种情况,结果将与引用模式相同。
1 通常,但见例如failglob在shell选项bash。另请参阅对此答案的评论。
当git add获取文件名模式时,它不仅会添加当前目录中匹配的文件,还会添加整个存储库中匹配的所有文件(即包括任何子目录)。这就是为什么右下角的文字说
通配符:
我们需要引号,以便 Git 在我们的 shell 干扰它之前收到通配符。如果没有引号,我们的 shell 只会在当前目录中执行通配符搜索。Git 将收到 shell 找到的文件列表,而不是通配符,并且无法将这些文件添加到 octofamily 目录中。
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |