LinuxTee命令是一个命令行工具,它从标准输入读取,同时将结果写入标准输出和一个文件。换句话说,Linux中的tee命令一箭双雕:它从标准输入读取并将结果打印到文件,同时输出到标准输出。在本指南中,我们将仔细研究Linuxtee命令并通过一些示例演示其用法。基本语法$teeOPTIONSfilename以下是tee命令可以使用的一些选项。在tee命令的语法中,文件名是指一个或多个文件。(1)基本用法在下面的例子中,我们检查系统中的块设备,并将结果传递给tee命令,该命令将输出显示到终端,同时将其保存到名为blockdevices.txt的文件中$lsblk|teeblock_devices.txt使用cat命令查看blockdevices.txt文件的内容$catblock_devices.txt(2)将输出保存到多个文件可以将命令的输出写入多个以空格分隔的文件,如显示以下语法。$命令|tee文件1文件2文件3。..在下面的示例中,我们调用了命令来打印系统的主机名以及其他详细信息,并将标准输出保存到两个文件file1.txt和file2.txt中,我们调用了hostnamectl命令来打印系统的主机名和其他详细信息,并将标准输出保存到两个文件file1.txt和file2.txt$hostnamectl|teefile1.txtfile2.txt同样可以使用cat命令确认两个文件中的内容如下$catfile1.txt$catfile2.txt(3)抑制输出如果你想隐藏或者抑制tee命令打印屏幕上的输出然后将输出重定向到/dev/null,如下所示:tee文件>/dev/null示例:$df-Th|teefile4.txt>/dev/null(4)将输出附加到文件默认情况下,tee命令会覆盖文件的内容。要附加输出并防止擦除当前内容,请使用-a或--append选项。默认情况下,tee命令会覆盖文件内容。要附加输出并防止当前内容被覆盖,请使用-a或-append选项。$命令|tee-a文件如图所示,我们将date命令的输出附加到file1.txt,其中已经包含有关系统上USB设备的信息。$日期|tee-afile1.txt(5)与sudo一起使用假设作为sudo用户,您想写入root拥有的文件。$echo"10.200.50.20db-01"|sudotee-a/etc/hosts/(6)输出重定向使用tee命令,我们可以轻松地将一个命令的输出重定向到另一个命令。第一个命令的输出将用作第二个命令的输入。如下:$grep'root'/etc/passwd|开球/tmp/passwd.tmp|wc-l2$cat/tmp/passwd.tmproot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin$(7)让我们假设您正在以非root用户身份工作并且您正在更改root拥有的文件并且您忘记将sudo放在命令前面,现在您想要保存更改,示例如下所示:假设您以非root用户身份工作,您正在更改root拥有的文件,而您忘记在命令前加上sudo,现在您想要保存更改,例如$vi/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4192.168.1.60mail.linuxtechi.com192.168.1.50ns.linuxtechi.com192.168.1.40pxe.linuxtechi.com当保存对文件的更改时,你会得到一个只读提示现在要在vi编辑器中保存对/etc/hosts文件的更改,运行Ifyouwanttosavethechangestothe/etc/hosts文件,请运行:w!sudotee%它将提示您输入用户密码,如果用户具有sudo权限,则更改将被保存。(8)忽略中断信号在tee命令中使用'-i'选项可以忽略中断信号(CTRL-C),示例如下:使用-i选项忽略中断信号(ctrl+c),示例如下如下$ping-c5linuxtechi.com|tee-i/tmp/pingtest.tmp(9)在脚本中的应用tee命令在shell脚本中经常使用,下面是一个常见的例子$vibasic-script.sh#!/bin/bashLOGFILE=/tmp/basic-日志-$(date+%d%m%Y)FLAVOR=$(cat/etc/*-release|grep-w'NAME='|cut-d"="-f2|awk'{print$1}'|sed's/"//g')if[$FLAVOR==CentOS];thendmesg|grep-i'error'|tee-a$LOGFILEgrep-i'installed'/var/log/dnf.log|tee-a$LOGFILEelseecho'donothing'fi我的开源项目course-tencent-cloud(酷瓜云课堂-gitee仓库)course-tencent-cloud(酷瓜云课堂-github仓库)
