归志宁无五亩园,读书本意在元元。这篇文章主要讲述Glob模式linux和.gitignore相关的知识,希望能为你提供帮助。
在使用 Git 时,一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总是出现在未跟踪文件列表当中。 这些通常都是自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在项目的根目录创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
.gitignore 文件可以使用标准的 glob 模式匹配。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
主要包含以下四种:
通配符(Wild Matching)*匹配0个或者多个字符,比如??d\\*?
??,可以匹配??d?
??,??dl?
??,??ddl?
?
?匹配单个字符,比如??d??
??,只匹配??dd?
??,不能匹配??d?
?
字符集(Character classes)包含在[]中的字符,只会被匹配一个,并且[]不可以为空。比如[abc]匹配a,b,c三个中的一个字符。
字符范围(Range)两个字符中间用-连接表示range,比如[0-9]等同于[0123456789]。
需要注意[ ]里可以包含[,],!,?,*,\\这些特殊字符,因此[[!*?]]匹配[,!,,*,?中的一个字符。
【Glob模式linux和.gitignore】
字符取反(Complementation)[!abc]表示匹配a,b,c之外的一个字符。
需要注意的是,如果-出现在开头或者结尾,并不表示range,比如[-a]或者[a-]匹配-,a字符中的一个。
注意事项
- 上面所有形式的glob都不匹配/(Forward slash)字符,因此假设有如下目录结构:
├── Document
│├── glob.txt
│├── Linux
│├── glob.txt
那么在Document目录下运行?
?ls *.txt?
?只会列出Document目录下的glob.txt,而不会列出Linux/glob.txt
**双星号代表可以匹配后代所有子目录。所以上面可以使用??ls **/*.txt?
?,列出glob.txt和Linux/glob.txt
- 任何以.开头命名的文件,都必须在glob中显示指定才能匹配;比如有一个文件.abc,那么?
?rm \\*?
?匹配不到.abc,只能使用??rm .*?
? - glob与正则表达式不一样;glob只匹配路径名,而不是匹配文件的内容,并且glob与正则表达式虽然有相同的通配符,但是意义却不一样,比如a*k在glob中可以匹配ak,abk,abck,但在正则表示中表示匹配ak,aak,aaak。
推荐阅读
- 基于分布式系统的7种唯一ID实现方案
- 先++与后++的区别
- linux查看所有/某个程序端口占用情况
- .gitignore格式说明详解
- 持续集成
- Win10系统设置BIOS密码保护系统安全的办法
- Win10系统下如何更改html文件默认打开方式
- Win10一周年更新后电脑出现bug如何处理
- win10系统开始菜单没有控制面板选项怎样回事?