由于makefile编译所有子目录中 sed 's,/($*/)/.o[ :],/1.o $@ : ,g' <$@ > $@ 的解释
这个语句分为好几层,我们一层一层来看
1. sed 's,/($*/)/.o[ :],/1.o $@ : ,g' <$@ > $@
首先看加粗这一层,$@表示目标参数中的.d文件, ‘<’ 将.d文件的内容交给sed处理.
2. sed 's,/($*/)/.o[ :],/1.o $@ : ,g' <$@ > $@
这个 ’>‘ 将 sed处理之后的内容再返回给.d文件
3. 现在具体分析sed中的内容
由于sed中的分隔符可以自定义,这里的分割符为','逗号,逗号将整个语句分为四个部分
3.1 s,/($*/)/.o[ :],/1.o $@ : ,g
表示sed文件处理方式为替换文件内容,s,a,b 表示将a替换为b
3.2 's,/($*/)/.o[ :],/1.o $@ : ,g
/(/)表示保存文件的内容,$*表示文件名中除后缀名以外的文件名,同时可以使用/1来表示
.o 表示与 文件名中的.o匹配
[ :]中间是一个空格和一个分号,[]表示与其内容中的某一个字符匹配,因为.d中内容一般为 a.o : a.c a.h b.h之类的内容,[]中的内容对应':'以及左右的空格的内容。因此[ :]对应.o后面的空格或是分号。
3.3 's,/($*/)/.o[ :],/1.o $@ : ,g'
/1.o表示前面的$*,也就是a.o ;$@表示 a.d也就是.d文件,然后就是' : '
3.4 's,/($*/)/.o[ :],/1.o $@ : ,g'
g 获得内存缓冲区的内容,并替代当前模板块中的文本;
因此上述的内容就是将 a.o : a.c a.h b.h 替换为 a.o a.d : a.c a.h b.h
此上。
随机推荐
- springboot源码解析-管中窥豹系列之BeanDefinition(八)
一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...
- kubernetes进阶(六)k8s平滑升级
当我们遇到K8S有漏洞的时候,或者为了满足需求,有时候可能会需要升级或者降级版本, 为了减少对业务的影响,尽量选择在业务低谷的时候来升级: 首先准备好文件:我这里选择的是内网文件服务器上下载的,请自行 ...
- select函数详细用法解析
1.表头文件 #include #include #include 2.函数原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set ...
- Chrome DevTools & Slow 3G Network
Chrome DevTools & Slow 3G Network shortcuts https://developers.google.com/web/tools/chrome-devto ...
- Github Trending All In One
Github Trending All In One github trending https://github.com/trending https://github.com/trending/j ...
- 「NGK每日快讯」2021.2.4日NGK公链第93期官方快讯!
- VAST二月上线交易所,打通NGK各大币种之间通道!
1月20日,管理着超过8.7万亿美元资产的全球最大资产管理公司贝莱德似乎已批准其旗下两个相关基金--贝莱德全球分配基金公司和贝莱德基金投资比特币期货.提交给美国证券交易委员会的招股说明书文件显示,贝莱 ...
- 交易所频频跑路?Baccarat去中心化交易平台助力资金安全
过去,黑客攻击可能是交易所跑路的最常见原因.自OKEx事件以来,这些交易所暂停提币或跑路还多了一个原因,就是因创始人正在协助调查. 据不完全统计,自OKEx于10月16日宣布暂停提币后不到两个月,已经 ...
- C++算法代码——单词查找
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=2472 题目描述 给定 n 个长度不超过 50 的由小写英文字母组成的单词准备查询,以 ...
- css中的transform,transition,translate的关系
transform 旋转(transform是没有动画效果,你改变了它的值,元素的样子就唰的改变了.其中的位移的函数名就叫translate,所以说,translate是transform的一部分.) ...