make 2>&1 | tee log.txt 命令解析

 make 2>&1 | tee log.txt命令解析


1. make是什么?

make是linux下一个非常强大的命令,简单点就是你要编译你的源代码就得靠他了。

2. 2>&1是什么意思?

0 stdin,1 stdout,2 stderr

2>&1应该分成两个部分来看,一个是2>以及另一个是&1,

其中2>就是将标准出错重定向到某个特定的地方;&1是指无论标准输出在哪里。
 

所以2>&1的意思就是说无论标准出错在哪里,都将标准出错重定向到标准输出中。

有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了”2>1”这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法



3. | 管道

管道的作用是提供一个通道,将上一个程序的标准输出重定向到下一个程序作为下一个程序的标准输入。

通常使用管道的好处是一方面形式上简单,另一方面其执行效率要远高于使用临时文件。

这里使用管道的目的是将make程序的输出重定向到下一个程序,其最终目的是用来将输出log存入文件中。

4. tee是用来干什么的?

tee从标准输入中读取,并将读入的内容写到标准输出以及文件中。
 

所以这里tee命令的作用是将数据读入并写到标准输出以及log.txt中。


之所以要将编译产生的log保存到log.txt中,其原因是你的标准输出的缓存可能是有限制的,而你编译程序产生的log可能会很多,这样很可能会造成log不完整;

其目的是当程序发生编译错误的时候,我们可以从log.txt中看到完整的编译log,这样方便查找编译错误。

发布了5 篇原创文章 · 获赞 4 · 访问量 2790

 make 2>&1 | tee log.txt命令解析

猜你喜欢

转载自blog.csdn.net/jian3214/article/details/93721148