Linux tee 命令解释(附示例)

当您在终端上运行基本命令时,输出通常会打印到终端,即标准输出。 但是,如果您还可以将输出保存在文件中并将其打印为标准输出呢? 这就是 tee 命令所做的。 Linux tee 命令从 stdin(标准输入)读取,然后写入 stdout(标准输出)以及一个文件或多个文件。

tee 命令的基本语法

tee 命令采用以下语法。

$ 命令 | 球座 [ options ] 文件

现在让我们对 tee 命令的一些示例用法进行示例。

tee 命令的基本使用

假设我们要使用以下命令打印内存和交换使用情况 自由 命令并将输出保存在一个名为 memory_usage.txt. tee 命令将按如下方式调用。

$ free -h | tee memory_usage.txt

tee 命令从命令中读取,将输出保存到 memory_usage.txt 文件,然后将其打印为标准输出。

确认输出已保存到 memory_usage.txt 文件运行 cat 命令,如图所示。

$ cat memory_usage.txt

将输出写入多个文件

此外,您可以将输出保存到多个文件,如图所示

$ 命令 | 球座 [ options ] 文件 1 文件 2 …

在下面的命令中,字符串 “嘿,欢迎来到 Linux” 保存在两个文本文件中: 文件1.txt 文件2.txt

$ echo Hey, Welcome to Linux | tee file1.txt file2.txt

将内容附加到文件

通常, tee 命令会覆盖文件,这并不总是可取的,因为它可以擦除至关重要的现有数据。 值得庆幸的是,您可以使用 -一种 将文本附加到文件的选项。 让我们来测试一下。

首先,我们将编写输出 正常运行时间 命令给 统计信息.txt 文件如图所示。

$ 正常运行时间 | 三通统计.txt

使用 命令来验证这一点。

$ cat stats.txt

接下来,我们将附加输出 免费 -h 命令将我们的内存和交换使用情况打印到文件中。

$ free -h | tee -a stats.txt

再次验证内容 统计信息.txt 文件。 这一次,该文件将包含两个命令的输出,如下面的屏幕截图所示。 这是因为我们附加了输出 免费 -h 命令给 统计信息.txt 文件,因此现有文本不受影响。

将内容附加到文件

抑制 tee 命令的输出

如果你不希望有输出 球座 命令打印到标准输出,您可以将其重定向到 /开发/空 这是一种丢弃信息的特殊设备。

以下面的例子为例,我们正在打印输出 df -Th 命令到文本文件,但抑制终端上的输出。

$ df -Th | tee disk_usage.txt >/dev/null

抑制 tee 命令的输出

让 tee 命令忽略中断

有时,您可能想要停止持续运行的命令。 发生这种情况时,您可能会考虑让 tee 命令即使在程序中断后也能正常退出。 要完成此操作,请使用 -一世 或者 –ignore-interrupts 显示的语法中提供的选项。

$ 命令 | tee -i 文件名

下面的 ping 命令不断向 Google 的 DNS ( 8.8.8.8 ) 发送 ping 请求。 我们在连续 4 次 ping 请求后中断了命令。 为了 球座 命令优雅退出,调用 -一世 选项。

$ ping 8.8.8.8 | tee -i ping_stats.txt

忽略中断

没有 -一世 选项,则不会打印统计信息的输出和摘要。

结果

使用 tee 命令 sudo

修改 root 用户或其他登录用户拥有的文件时,只需使用 tee 命令,而无需调用 sudo 命令将产生错误。

在下面的示例中,我们正在创建一个名为的新存储库 anydesk-stable.list 对于 AnyDesk 应用程序 /etc/apt/sources.list.d 为 root 用户保留的路径。

$ echo "deb https://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list

正如预期的那样,我们遇到了“权限被拒绝”错误,因为我们没有在该路径中创建或修改文件的权限。

使用 tee 命令 sudo

解决方法是先 球座 与 sudo 命令如图所示。

$ echo "deb https://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list

这种情况下,放置后命令成功 sudo 开球前。

sudo  开球命令

获取有关 tee 命令的帮助

有关使用 tee 命令的更多命令选项和帮助,请运行以下命令。

$ tee --help

tee 命令帮助选项

此外,如图所示浏览手册页

$ man tee

tee 命令手册页

要检查版本,请运行:

$ tee --version

检查 tee 命令版本

概括

这就是 Linux tee 命令的全部内容。 值得注意的是,该命令从标准输入 (stdin) 读取,然后写入标准输出 (stdout) 和文件。