tee命令

Zss 发表于:

当我的需要在屏幕中打印运行的信息,而且也需要将这些信息保存到日志中的时候,这是时候使用tee命令非常方便

我需要在host中和虚拟机中计算他们一段时间后时间的差值是否有所增大多少的时候使用tee命令在屏幕实时打印信息且能保存到log中,若是使用

./your_scripts.sh > log.log 2>&1

把标准输出和错误输出都重定向到log.log文件

这样子屏幕中却没有回显出来了,使用./date.sh | tee -a date.log ,-a用于log日志的追加写入方式

date +%s.%N  纳秒级别的时间戳

#!/bin/sh
a=1
while :;do
    date
    date +%s.%N
    echo 执行时间:${a}s
    echo ---------------
    a=`expr $a + 1`
    sleep 1
done

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件

语法

tee(选项)(参数)

选项

-a:向文件中重定向时使用追加模式;
-i:忽略中断(interrupt)信号。

参数

格式:tee

只输出到标准输出,因为没有指定文件嘛。

 

格式:tee file

输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。(If a file being written to does not already exist, it is created. If a file being written to already exists, the data it previously
contained is overwritten unless the `-a’ option is used.)

 

格式:tee -a file

输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

 

格式:tee –

输出到标准输出两次。(A FILE of `-‘ causes `tee’ to send another copy of input to standard output, but this is typically not that useful as the copies are interleaved.)

 

格式:tee file1 file2 –

输出到标准输出两次,同时保存到file1和file2中

 

文件:指定输出重定向的文件。

在终端打印stdout同时重定向到文件中:

ls | tee out.txt
1.sh
1.txt
2.txt
eee.tst
EEE.tst
one
out.txt
string2
www.pdf
WWW.pdf
WWW.pef
[root@localhost text]# ls | tee out.txt | cat -n
     1  1.sh
     2  1.txt
     3  2.txt
     4  eee.tst
     5  EEE.tst
     6  one
     7  out.txt
     8  string2
     9  www.pdf
    10  WWW.pdf
    11  WWW.pef