【微知】如何将echo某个数据到文件然后cat出来结合在一起输出?(echo 1 | tee filea; cat fileb | tee fila)
如题,常见办法是echo 1 > filea; cat filea
还有一个结合tee的方法echo 1 | tee filea
,这个方法结合了tee的既输出到文件,也输出到屏幕。但是这个用法tee命令并不是真的从文件去dump出来,是否写成功最好用cat确认。
下面是一个实验:用strace追踪tee是如何运行的:echo 1 |strace tee -a filea
,结论就是tee是将stdin的输入读取到之后分别write到目标文件stdout。并且目标文件如果-a就是append的方式。
那么再回过头来看,难道这种tee方式没有什么价值吗?还得cat确认?
有一种场景这种方式就比较好,就是当如的输入信息是类似cat fileb 这种,如果直接cat fileb > filea,是不知道内容的。但是如果用tee就能也能看到写入文件的内容是什么。但是同样存在前面提到的问题。不过对于绝大部分场景,这个已经很有用了。方法就是:cat fileb | tee fila
来替代cat fileb; cat fileb > fila
。如果追加就是cat fileb | tee -a fila
替代cat fileb; cat fileb > fila
实操效果:可以看到,把文件1的内容展示出来了,并且也追加到filea了。用这个-a还能提到echo >>这种方式。