带有初学者示例的 Linux Tee 命令教程

在 Linux 中使用终端时,有许多命令行实用程序可让您的生活更轻松。 一种这样的实用程序是 Tee. 在这个简短的指南中,我们将通过实际示例了解什么是 Tee 以及 Tee 命令在 Linux 中的用法。

Tee 命令介绍

tee 是一个简单的命令行实用程序,它接受输入并将输出写入文件和标准输出(即终端)。 当您想要将输出重定向到多个文件并进一步处理输出时,Tee 命令将主要用于 shell 脚本。

tee 命令是 GNU coreutils,因此它预装在所有 Linux 发行版中。

要检查 tee 命令在您的 Linux 发行版中是否可用,请运行以下命令:

$ which tee
/usr/bin/tee

要检查 tee 版本,您可以使用 --version 旗帜。

$ tee --version
tee (GNU coreutils) 8.32

显示 tee 命令帮助

如果您从未使用过 tee 命令,最好从 tee 命令帮助部分开始。

您可以访问 tee 命令的手册页以了解有关此实用程序的更多信息。

$ man tee

你也可以通过 --help tee 命令的参数以显示其帮助手册。

$ tee --help

tee 命令语法

Tee 命令的典型语法如下:

球座 [OPTION]… [FILE]…

它接受输出将被重定向的标志和文件名。

tee 命令主要使用两个重要的标志。

  • -a, --append 标志:附加到文件。
  • -i, -ignore-interrupts flag : 忽略中断信号。

现在让我向您展示一些 Linux 中 tee 命令的示例。

适合初学者的 Linux Tee 命令示例

如前所述, tee 命令将接受输入并将输出打印到终端以及作为参数传递的文件。

在下面 exampletee 命令从 echo 命令并将输出打印到终端以及 hello.txt 文件。

$ echo "Welcome to OSTechNix" | tee hello.txt
Welcome to OSTechNix

让我们检查一下内容 hello.txt 文件:

$ cat hello.txt 
Welcome to OSTechNix
tee 命令用法 example 在 Linux 中

将 tee 命令与管道运算符一起使用

Tee 命令不仅将标准输入打印到终端,还将其通过管道传输到另一个程序中进行进一步处理。

大多数情况下 tee 命令将与 pipe (|) shell 脚本中的运算符。

看看下面 example.

$ echo "Hello world" | tee hello.txt | rev
dlrow olleH
$ cat hello.txt
Hello world

让我解释一下运行上述命令时会发生什么。

  • echo 命令将发送其输出 "Hello World" 作为输入 tee 通过管道命令。
  • Tee 命令将输出存储在给定的文件中 hello.txt.
  • 而不是将输出打印到终端,这是默认行为, tee 命令通行证 "Hello World" 字符串作为输入 rev 打印字符串的命令 相反的顺序.

这是另一个 example.

以下命令创建一个名为“ostechnix”的目录,计算“ostechnix”中的字符数并将“ostechnix”打印到终端:

$ echo "ostechnix" | tee >(xargs mkdir) >(wc -c)

小心: 您可能需要使用 sudotee 如果您在普通用户无权访问的目录中创建文件,则使用该命令。

传递多个文件

Tee 命令还接受多个文件作为参数并将输出存储到每个文件。

$ echo "Welcome to OSTechNix" | tee hello1.txt hello2.txt hello3.txt
Welcome to OSTechNix

让我们检查每个文件的内容:

$ cat hello1.txt
Welcome to OSTechNix
$ cat hello2.txt
Welcome to OSTechNix
$ cat hello3.txt
Welcome to OSTechNix
使用 tee 命令将输出发送到多个文件

覆盖与追加

的默认行为 tee 命令是它将搜索文件是否已经可用并用新文件覆盖数据。 如果文件不可用,它将创建文件。

如果您希望附加数据而不是覆盖,请使用 -a 或者 --append 旗帜。

$ cat hello1.txt
Welcome to OSTechNix
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt
I am using PoP_OS Cosmic Desktop
$ cat hello1.txt
Welcome to OSTechNix
I am using PoP_OS Cosmic Desktop

将 Tee 与重定向运算符结合使用

如果您不希望将输出打印到终端而只是将输出写入文件,则可以将重定向运算符与 tee 命令结合使用。

仅当 tee 命令在您的管道链中最后出现时,这才是理想的情况。 如果 tee 输出通过管道传输到另一个命令,例如
显示在第一 example,不需要使用重定向操作符。

$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt &> /dev/null

中断信号

Tee 命令可以选择使用 -i 或者 --ignore-interrupts 旗帜。

含义 – 如果你按下 CTRL + C 在您的终端中运行 tee 命令时使用 -i 标志, tee 命令将中断信号并通过从 PIPE 读取 EOF 来优雅地退出。

$ { echo Hello world;sleep 10; } | tee -i hello1.txt
Hello world
^C
$ cat hello1.txt
Hello world

概括

Tee 是一个简单的程序,您可能不会每天都使用它。 但是,当您编写 shell 脚本时,了解 tee 命令会派上用场。 希望这可以帮助。