当前位置: 首页 > Linux

命令的输出没有保存?甚至不能使用tee命令!

时间:2023-04-06 01:40:03 Linux

在很多情况下,我们需要将程序/命令的输出保存到本地。常用的方法之一就是重定向,这也是一个很好的方法。但有一个问题。如果要进行后续操作,比如统计输出行数等,重定向会很困难。这时候tee命令就派上用场了~tee语法格式:$tee[OPTIONS][FILE]这条命令有4个主要选项,可以将结果保存到一个或多个文件中。4个选项说明如下:选项:名称说明-a或--append用于在现有文件末尾附加数据-i或--i??gnore-interrupts用于忽略中断信号--help用于显示所有可用选项forthiscommand–version用于显示命令的当前版本Files:目标文件,可以是一个或多个文件,用于存放tee命令的输出。一、tee命令的基本用法在Linux中我们可以通过ls-la查看当前目录下文件的详细信息,想必大家都用过。现在,我们要将ls-la命令的输出保存到文件output.txt中,我们可以这样做:teeoutput.txt$catoutput.txt输出:这里,第一个命令将ls-la的输出显示到终端,并将输出写入文件output.txt。第二条命令显示了output.txt文件的具体内容,如下图所示:2.将输出追加到现有文件中如果我们使用带有-a选项的tee命令,它会追加命令的输出写入现有文件不会覆盖文件的原始内容。例如,如果我们想将pwd命令的输出附加到现有文件output.txt的末尾,我们可以像这样运行以下命令:tee-aoutput.txt$catoutput.txt在这里,第一个命令将pwd的输出显示到终端,并将pwd的输出附加在output.txt文件的末尾。第二条命令用于查看输出文件的内容。如下图,output.txt文件包含了上一个例子和当前例子的输出[图]3.输出写入多个文件tee命令也可以将各种命令的输出存储到多个文件中。在这种情况下,我们需要用空格分隔这些文件名。例如,如果我们想将date命令的输出存储到两个文件output1.txt和output2.txt中,我们可以这样执行命令:teeoutput1.txtoutput2.txt$catoutput1.txtoutput2.txtOutput:这里,第一个命令显示当前系统日期并将值存储到两个文件output1.txt和output2.txt。第二条命令显示这两个文件的内容,具体结果如下:4.忽略中断信号众所周知,当一个命令/程序接收到中断信号时,就会被该信号打断。如果tee命令不想在执行过程中被打断,我们可以使用-i选项来忽略命令执行过程中的中断信号。在这种情况下,即使我们按下CTRL+C,该命令仍然会正确执行。例如:$wc-loutput.txt|tee-ioutput3.txt$catoutput.txt$catoutput3.txtOutput:这里,第一个命令统计output.txt文件的总行数,并将输出存储到output3.txt文件中。第二条命令显示output.txt文件的具体内容,第三条命令显示output3.txt的内容,与wc-loutput.txt的输出相同。5.将tee命令的输出通过管道传输到另一个命令我们可以将tee命令的输出通过管道传输到另一个命令。在此示例中,ls命令将输出传递给tee命令,tee命令的输出传递给wc命令,如下所示:三通output4.txt|wc-lcw$ls$catoutput4.txt输出:这里,第一个命令将ls命令的输出写入文件output4.txt并计算output4.txt的行数、单词数和字符数。第二条命令用于显示ls命令的输出,第三条命令用于查看output4.txt文件的内容。6、使用bash脚本执行tee命令除了Linux命令,tee命令还可以将bash脚本输出写入文件。例如,我们使用以下代码创建一个名为add.sh的bash脚本,它将从命令行参数中获取两个输入数字并打印这两个数字的总和。add.sh#!/bin/basha=$1b=$2((result=$a+$b))echo"Theadditionof$a+$b=$result"如果我??们要使用tee命令添加.sh脚本输出被写入文件result.txt,我们可以这样做:$bashadd.sh5090|teeresult.txt$catresult.txt输出:在此示例中,数字50和90作为命令行参数add.sh传递给脚本,其输出由tee命令写入文件result.txt。然后我们使用cat命令查看result.txt文件的内容:7.隐藏tee输出如果我们想把target命令的输出直接写到文件中而不在终端显示,那么我们可以重定向结果tee命令的/在dev/null中,例如:$df|teeoutput5.txt>/dev/null$catoutput5.txt输出:这里,第一个命令用于将df命令的输出写入到文件output5.txt中,命令的结果不会在终端回显。第二条命令用于查看output5.txt文件的内容。大家学会了吗?---------------我是梁旭,外资500强公司Linux开发工程师,专业从事Linux干货制作。欢迎关注我的公众号“良旭Linux”,回复“1024”获取最新最全的技术资料,回复“进群”进入专家云技术交流群。