首页 理论教育 如何使用tee命令同时将结果输出到标准输出与文件

如何使用tee命令同时将结果输出到标准输出与文件

时间:2023-11-18 理论教育 版权反馈
【摘要】:如果希望命令的结果显示在屏幕上的同时,又能被重定向到一个文件,可使用三通命令tee。图3-3 <命令>|tee<文件>示意图例如,查找当前目录下名字以.txt结尾的文件,并将查找结果存入txt_list:查看一下txt_list,看看是否与上面命令的屏幕显示结果一致:使用命令teefile时,如果file是个已经存在的文件,那么file的老内容会丢失,被新内容冲掉。表3-5 常用的重定向命令文件描述符0,1,2分别对应标准输入、标准输出、标准错误。

如何使用tee命令同时将结果输出到标准输出与文件

单词tee是字母T的意思,从外形看,T显然是一个“三通”。命令的结果默认显示在屏幕上,若命令的结果被重定向到一个文件,那么屏幕上就看不到了。如果希望命令的结果显示在屏幕上的同时,又能被重定向到一个文件,可使用三通命令tee。例如,执行命令ls-l123.log,文件123.log的信息显示在屏幕上,后面跟着管道线和teeloginfo.txt时,屏幕上显示的内容同时也存入了loginfo.txt:

978-7-111-48202-4-Chapter03-130.jpg

可以用一张图来示意上面使用管道和命令tee的例子,如图3-3所示。

978-7-111-48202-4-Chapter03-131.jpg

图3-3 <命令>|tee<文件>示意图

例如,查找当前目录下名字以.txt结尾的文件,并将查找结果存入txt_list:

978-7-111-48202-4-Chapter03-132.jpg

查看一下txt_list,看看是否与上面命令的屏幕显示结果一致:

978-7-111-48202-4-Chapter03-133.jpg

使用命令teefile时,如果file是个已经存在的文件,那么file的老内容会丢失,被新内容冲掉。例如:

978-7-111-48202-4-Chapter03-134.jpg

使用tee命令的选项-a或--append时,即,使用命令tee-afile时,新内容会附加在文件file的后面,file的老内容不会丢失。例如:

978-7-111-48202-4-Chapter03-135.jpg(www.xing528.com)

如果tee命令后面的文件名用“-”代替,内容会显示在屏幕上(而不是重定向到文件),这时,相同的内容会显示两次,例如:

978-7-111-48202-4-Chapter03-136.jpg

下面命令的作用是,从根目录开始查找名字以.txt结尾的文件,在屏幕上将显示正常信息(找到的名字以.txt结尾的文件)和错误信息(如Permission denied,有的目录用户没有权限进入搜索),找到的文件列表存入txt_list:

978-7-111-48202-4-Chapter03-137.jpg

如果希望正常信息和错误信息都存入txt_list,用如下命令:

978-7-111-48202-4-Chapter03-138.jpg

Bash4新增了重定向符号|&,command1|& command2等价于command1 2>&1|command2。所以上面的命令可以变为:

978-7-111-48202-4-Chapter03-139.jpg

总结前面的内容,得到表3-5。

表3-5 常用的重定向命令

978-7-111-48202-4-Chapter03-140.jpg

文件描述符0,1,2分别对应标准输入、标准输出、标准错误。其他的数字也能作为文件描述符进行重定向。下一节先介绍exec命令,然后继续文件描述符的讲解。初学者可以暂时跳过下一节。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈