Linux Tee 命令是一个命令行工具,它从标准输入中读取,同时将结果写入标准输出和文件中。 换句话说,我们可以说,Linux 中的 tee 命令用于一石二鸟:从标准输入读取并同时将结果打印到文件和标准输出。 这是什么意思? 在本指南中,我们更详细地介绍了 Linux tee 命令并使用一些示例来演示其用法。
Tee 命令语法
tee 命令语法非常简单,采用以下格式:
$ tee 选项文件名
以下是您可以与 tee 命令一起使用的一些选项:
在 tee 命令的语法中, 文档名称 指一个或多个文件。
考虑到这一点,让我们查看一些有关如何使用该命令的示例。
示例 1) tee 命令的基本用法
如前所述,tee 命令的主要功能是显示命令的输出(stdout)并将其保存在文件中。 在下面的示例中,我们正在检查系统中的块设备并将结果传送到 tee 命令的命令,该命令将输出显示到终端,同时将其保存在一个名为的新文件中 block_devices.txt
$ lsblk | tee block_devices.txt
随意使用 cat 命令检查 block_devices.txt 文件的内容,如下所示:
$ cat block_devices.txt
例 2) Save 使用 tee 命令输出到多个文件
此外,您可以将命令的输出写入多个以空格分隔的文件,如下面的语法所示。
$ 命令 | tee 文件 1 文件 2 文件 3 。 . .
在下面的例子中,我们调用了 主机名 命令打印我们系统的主机名以及其他详细信息,并将标准输出保存到两个文件中 文件1.txt, 和 文件2.txt
$ hostnamectl | tee file1.txt file2.txt
再次,您可以使用 cat 命令确认两个文件中输出的存在,如下所示:
$ cat file1.txt $ cat file2.txt
示例 3) 抑制 tee 命令的输出
如果您想隐藏或禁止 tee 命令在屏幕上打印输出,则将输出重定向到 /开发/空 如图所示:
$ 命令 | tee 文件 > /dev/null
例如,
$ df -Th | tee file4.txt > /dev/null
示例 4) 使用 tee 命令将输出附加到文件
默认情况下, tee 命令会覆盖文件的内容。 要附加输出并防止擦除当前内容,请使用 -一种 或者 -附加 选项。
$ 命令 | tee -a 文件
在第二个命令中,如图所示,我们将 date 命令的输出附加到 文件1.txt 其中已包含有关系统上 USB 设备的信息。
$ date | tee -a file1.txt
示例 5) 与 tee 一起使用 sudo 命令
假设作为一个 sudo 用户,您想写入 root 用户拥有的文件。 自然地,任何提升的操作都需要您调用 sudo 用户在命令之前。
为此,只需在 tee 命令前加上 sudo 如下所示。
$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/
因此,tee 接收左侧的 echo 命令的输出并使用 sudo 命令最终将输出附加到文件中。
示例 6) 使用 tee 命令将一个命令的输出重定向到另一个命令
使用 tee 命令,我们可以轻松地将一个命令的输出重定向到另一个命令。 这里第一个命令的输出将作为第二个命令的输入。 示例如下所示:
$ grep 'root' /etc/passwd | tee /tmp/passwd.tmp | wc -l 2 $ cat /tmp/passwd.tmp root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin $
例 7) Save 使用 tee 命令更改 vi 编辑器中的文件
假设您以非 root 用户身份工作,并且您正在更改 root 拥有的文件,但您忘记放置 sudo 在命令前面,现在要保存更改,示例如下所示:
$ vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.60 mail.linuxtechi.com 192.168.1.50 ns.linuxtechi.com 192.168.1.40 pxe.linuxtechi.com
在保存对文件的更改时,您将收到只读消息,
现在要在 vi 编辑器中保存对 /etc/hosts 文件的更改,请运行
:w!sudo 球座 %
它会提示你输入用户的密码,如果用户有 sudo 权限,然后将保存更改。
示例 8) 使用 tee 命令时忽略中断信号
使用 ‘-一世’ tee 命令中的选项可以忽略中断信号(CTRL-C),示例如下所示:
$ ping -c 5 linuxtechi.com | tee -i /tmp/pingtest.tmp
示例 9) 在 shell 脚本中使用 tee 命令
在 shell 脚本中也经常使用 Tee 命令,下面列出了一个常见的例子:
$ vi basic-script.sh #!/bin/bash LOGFILE=/tmp/basic-logs-$(date +%d%m%Y) FLAVOR=$(cat /etc/*-release | grep -w 'NAME=' | cut -d"=" -f2 | awk '{print $1}'| sed 's/"//g') if [ $FLAVOR == CentOS ]; then dmesg | grep -i 'error' | tee -a $LOGFILE grep -i 'installed' /var/log/dnf.log | tee -a $LOGFILE else echo 'do nothing' fi
正如我们在上面的 linux shell 脚本中看到的,只有当操作系统是 CentOS 时,我们才使用 tee 命令将两个命令的输出附加到日志文件中。
结论
今天的话题到此结束。 随意权衡。您的反馈是最受欢迎的。 在本指南中,我们介绍了 Linux tee 命令。
另请阅读: Linux 中的 14 个 Grep 命令示例