前言

接触过linux的人,或多或少都会了解一点make 2>&1 | tee log.txt这个命令。

1. make是什么?

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

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

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

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

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

3. 这里为什么还用到了管道?

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

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

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

4. tee是用来干什么的?

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

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

怪不得可以看到标准输出会一直输出log,同时log也会保存到log.txt中呢,原来都是tee的功效。

为了验证,做了一个实验,make 2>&1 | tee log.txt > /dev/null,可以看到标准输出已经不会再输出log了。

之所以要将编译产生的log保存到log.txt中,

其原因是你的标准输出的缓存可能是有限制的,而你编译程序产生的log可能会很多,

这样很可能会造成log不完整;

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

这样方便查找编译错误。

5. 关于I/O重定向的疑问?

既然管道可以用来进行I/O重定向,那应该是先有管道左边进程的输出才会有管道右边进程的输入吧?

可是我执行make 2>&1 | id这条命令时,会立即显示出id这条命令的结果,好像make并没有执行一样,

这该如何解释?

有知道的朋友指点一下哦,本人也会持续的去了解相关内容,如有结果到时再更新出来。

make 2>&1 | tee log.txt之小析的更多相关文章

  1. top 自动执行的shell脚本中,使用top -n 1 > log.txt, 上电自动执行,文件无输出

    . 自动执行的shell脚本中,使用top -n > log.txt, 上电自动执行,文件无输出,使用一下命令解决: //usr/bin/top -d -n -b > log.txt 如果 ...

  2. System.IO.File.WriteAllText("log.txt", "dddd");

    System.IO.File.WriteAllText("log.txt", "dddd");

  3. PHP实现日志写入log.txt

    引言:有时候调试,看不到效果,需要通过写入文件来实现. 案例: <?php $myfile = fopen("log.txt", "a+") or die ...

  4. Poco logger 日志使用小析

    Poco logger 日志使用小析 Poco logger 日志使用小析 日志 logger 库选择 Pocologger 架构简析 步骤一 生成消息 步骤二 写入logger 步骤三 导入chan ...

  5. gtest运行小析

    Gtest是google推出的C++测试框架,本篇文档,从整体上对Gtest的运行过程中的关键路径进行分析和梳理. 分析入口 新建一个最简单的测试工程,取名为source_analyse_proj,建 ...

  6. PHP Log时时查看小工具

    以前Log都是打印在一个文档中,然后打开文件夹,最后打开文档查看里面的内容,每次打开文件夹感觉很烦. 前些日子看到同事开发.NET的时候,用他自己的一个小工具能够时时查看到Log的内容,非常方便,所以 ...

  7. console.log几个小知识

    <script> //百度的console console.log('一张网页,要经历怎样的过程,才能抵达用户面前?\n一位新人,要经历怎样的成长,才能站在技术之巅?\n探寻这里的秘密:\ ...

  8. 提高看log效率的小工具

    文本型的log,比如Android的log,都是普通文本.在大家连续奋战的时候,难免看起来容易眼花. 这时候如何提高效率?我们给它搞个高亮好不好? 这就是我们要介绍的看log工具:TextAnalys ...

  9. C# 實現文件壓縮-- 背景:服務器Log.txt 過多,佔用過多硬盤空間,壓縮備份后節省空間資源

    1.壓縮實現代碼如下: 調用ICSharpCode.SharpZipLib.dll(free software,可以搜到源碼). 轉移指定目錄文件夾轉移到目標文件夾 壓縮目標文件夾 刪除目標文件夾 u ...

随机推荐

  1. 幻世(OurDream)2D图形引擎使用教程8——处理操作输入(2)

    声明:本教程版权归Lizcst Software Lab所有,欢迎转载,但是转载必须保留本段声明文字,并注明文章来源:http://blog.csdn.net/kflizcst 谢谢合作! 今天的教程 ...

  2. Ch02 从零开始实例学习6

    演练:理解Edit方法和Edit视图 原文链接:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/exam ...

  3. unix命令: ifconfig

    ifconfig 命令被用来: 1.为一个网卡分配一个IP地址 2.设置本地环路界面 3.分配一个子网掩码(可选) HP-UX: # /usr/sbin/ifconfig lan0 lan0: fla ...

  4. window.name 跨域

    跨域的由来 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但是我们常常会遇到无法避免跨域的情况,如普通文章站点(article.xxx.com)需要评论,而评论站点却在chea ...

  5. Qt之开机自启动及拥有管理员权限

    源地址:http://blog.sina.cn/dpool/blog/s/blog_a6fb6cc90101feia.html Windows开机自启动的程序很多,包括系统软件.杀毒软件.一些其他安装 ...

  6. 一道c++小编程题,

    题目: 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词,程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身,跟 踪重复次数量多的单词及其重复次数 ...

  7. 键盘皇者 RealForce 104Pro独家评测

    http://tech.sina.cn/?sa=t84d20738943v44&page=2&pwt=rest2&vt=4&from=mbaidu&clickt ...

  8. char *和char[]的区别,困扰很长时间了,总结下

    char c1[] = "hello";// char *c2 = "hello";// 区别1: c1是一个局部数组,c2是一个全局数组. 局部数组c1是局部 ...

  9. Ubuntu下装QQ2012,让linux小白们不怕脱离windows

    嘿嘿,很多人可能跟我一样,QQ上同学群里会通知一些事项,所以我们希望可以在linux下开QQ,但是QQ官网做的QQ For Linux, 实在是烂的不行 那么怎么在linux下装我们平时在window ...

  10. android Activity切换动画效果

    为Activity设置左右进出的效果,能够通过在Mainfest.xml文件里设置主题的方式来实现.还能够使用java代码. 一.设置样式 先看看实现动画的样式: <style name=&qu ...