如何使用Linux tee命令?用法示例指南

2021年11月18日22:20:55 发表评论 1,083 次浏览

介绍

当用户在 Linux 交互式 shell 中执行命令时,输出将显示在文本终端中。但是,有一些方法可以使用连接在管道中的其他 shell 命令来更改此行为。

如何使用Linux tee命令在本教程中,你将学习如何在 Linux 中使用 tee 命令来管理命令的输出。

先决条件

  • 一个运行 Linux 的系统
  • 访问命令行或终端
  • 须藤权限

tee 命令在 Linux 中有什么作用?

tee命令读取标准输入 (stdin) 并将其写入标准输出 (stdout) 和一个或多个文件。tee通常是管道的一部分,任何数量的命令都可以在它之前或之后。

如何使用Linux tee命令?用法示例指南

注意:要在 Linux 中处理标准输入,你可以使用xargs 命令,该命令可以与其他命令结合使用。

Linux 中的 tee 命令示例

tee命令单独使用或与其他选项一起使用。如何使用Linux tee命令?以下部分列出了可用选项并提供了命令用法示例。

基本用途

Linux如何使用tee命令tee命令的基本语法是:

[command] | tee [options] [filename]

下面的示例演示了如何使用tee来创建一个文件,该文件存储有关网络接口的信息,同时在终端中提供相同的输出:

如何使用Linux tee命令?用法示例指南

该猫命令确认tee成功地写输出ifconfig到文件example.txt

如何使用Linux tee命令?用法示例指南

如果用于命令的文件已经存在,则tee覆盖文件的先前内容。

附加到给定文件

Linux tee命令用法示例:覆盖文件的内容是该tee命令的默认行为。使用参数-a(或--append)将命令输出添加到文件末尾。

[command] | tee -a [filename]

例如,使用以下echo命令将一行文本附加到文件中:

如何使用Linux tee命令?用法示例指南


使用以下cat命令确认添加成功:

如何使用Linux tee命令?用法示例指南

写入多个文件

使用tee后跟任意数量的文件将相同的输出写入每个文件:

[command] | tee [options] [filename1] [filename2]...

下面的示例显示将echo命令的输出写入两个文件:

如何使用Linux tee命令?用法示例指南

ls命令显示tee成功创建的文件example1.txtexample2.txt.

隐藏输出

如何使用Linux tee命令?要告诉tee将命令输出存储在文件中并跳过终端输出,请使用以下语法:

[command] | tee [options] [filename] >/dev/null

在下面的示例中,tee创建一个包含网络接口数据的文件,跳过标准输出:

如何使用Linux tee命令?用法示例指南

将一个命令的输出重定向到另一个

Linux如何使用tee命令tee不必是管道中的最后一个命令。使用它将输出转发到另一个命令:

[command] | tee [options] [filename] | [command]

在以下示例中,teels命令的输出存储到example.txt并将该文件的内容传递给grep 命令,该命令查找并显示单词“example”的所有实例:

如何使用Linux tee命令?用法示例指南

忽略中断

tee即使在上一个命令被中断后也能正确退出,请添加参数-i(或--ignore-interrupts):

[command] | tee -i [filename]

下一个示例显示了tee从ping 命令写入输出并成功完成操作,即使在ping被中断后Ctrl+C

如何使用Linux tee命令?用法示例指南

将 tee 与 Sudo 一起使用

Linux tee命令用法示例:为了能够tee写出属于其他用户的超级用户拥有的文件或文件,将sudo命令的权利之前tee

[command] | sudo tee [options] [filename]

下面的示例显示了写入根拥有的sudoex.txt. 当sudo添加的命令,则操作完成:

如何使用Linux tee命令?用法示例指南

在 Vim 编辑器中使用 tee

如何使用Linux tee命令?如果你在Vim 中打开和编辑一个 root 拥有的文件而不使用该sudo命令,尝试保存更改会产生一个错误:

如何使用Linux tee命令?用法示例指南

要覆盖此错误,请在 Vim 中键入以下内容:

:w !sudo tee %
如何使用Linux tee命令?用法示例指南

输入sudo密码后,Vim 显示警告但将更改写入文件。

注意:要在 Vim 中正确管理文件,尤其是在执行更改时,你需要知道如何在 Vim 中保存文件并退出以及如何在 Vim 中撤消和重做更改。

诊断写入非管道的错误

Linux如何使用tee命令?要指示tee在进程失败时打印错误消息,请使用-p参数:

[command] | tee -p [filename]

的默认操作tee -p是在检测到写入管道的错误时立即退出并打印错误消息。要更改写入错误时命令的行为,请使用--output-error参数,后跟指定行为的模式:

[command] | tee --output-error=[mode] [filename]

有四种可能的模式:

  • warn – 诊断写入任何输出的错误。
  • warn-nopipe – 诊断写入任何非管道输出的错误。
  • exit – 在写入任何输出时出错退出。
  • exit-nopipe – 写入任何非管道输出出错时退出。

在 Bash 脚本中使用 tee 命令

tee命令经常出现在 bash 脚本中。考虑以下示例:

如何使用Linux tee命令?用法示例指南

上面的脚本打印“Hello World”消息并将输出存储在日志文件中。执行脚本会在tmp文件夹中创建一个日志文件。日志包含脚本的输出:

如何使用Linux tee命令?用法示例指南

查看日志文件

Linux tee命令用法示例:将脚本输出写入日志文件通常由>操作员执行:

./testbash.sh > testbash.log

上面的命令会创建一个日志文件,但不会向标准输出写入任何内容。

使用tee创建日志文件,并看到在终端的输出:

./testbash.sh | tee testbash.log

查看帮助和版本信息

Linux如何使用tee命令:tee通过键入以下命令查看命令的当前版本:

tee --version

有关tee命令语法和可用参数的说明,请使用命令的帮助参数:

tee --help

结论

如何使用Linux tee命令?通过阅读本教程,你了解了如何tee在管道中使用命令来管理命令输出。文章还谈到了tee在 bash 脚本中的使用。

在此Linux 命令备忘单中阅读有关 shell 命令的更多信息。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: