tee
。什么是 Tee 命令?
tee
命令是一个 Linux 命令,它将标准输入复制到标准输出(通常是您的屏幕)和指定文件。这对于将命令连接在一起非常有用,并且当您想要将输出重定向到单个或多个文件并仍然进一步处理输出时非常方便。该tee
命令得名于水管工在连接多根水管时使用的 T 型分流器。linuxmi.txt
. 我们要对该文本文件进行排序,将输出写入文件,并在终端上显示项目总数。我们使用下面的两个命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt > 300.txt
linuxmi@linuxmi:~/www.linuxmi.com$ wc -l 300.txt
8 300.txt
linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt | tee 300.txt | wc -l
安装 Tee 命令
tee
命令是随 GNU Coreutils 安装的工具之一。因此,它预装在任何 Linux 发行版上,您无需手动安装。但是,您可以通过运行以下命令来确认该实用程序是否可用。
linuxmi@linuxmi:~/www.linuxmi.com$ which tee
/usr/bin/tee
linuxmi@linuxmi:~/www.linuxmi.com$ tee --version
Tee 命令的基本语法
-a
:防止 tee 命令覆盖现有文件,而是追加数据。--version
:此选项显示当前安装的 tee 命令版本。--help
: 此选项列出了 tee 命令可用的所有选项
tee 命令应用
1. 将 Ping 命令的输出写入文件
linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170
linuxmi@linuxmi:~/www.linuxmi.com$ ping yahoo.com | tee pingLinuxMi.txt
下图显示了写入文件的 ping 输出以及stdout
.
2. 使用 Tee 命令将数据附加到文件中
tee
命令将输出写入现有文件时,它会自动覆盖所有现有数据。例如,tee
如果我们运行具有相同文件名的新 ping 命令来写入输出,将自动覆盖现有数据。我们将使用-a
如下语法所示的选项来防止这种情况。linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170 | tee -a pingLinuxMi.txt
3. 使用 Tee 写入多个文件
tee
命令写入多个文件,我们将使用以下语法。
[ ] | tee file1 file2 file3 file4
4. 使用 Tee 将命令输出重定向到另一个命令
tee
命令将一个命令的输出重定向到另一个命令。让我们使用下面的示例。ls
命令列出主目录中的所有文件,然后使用 wc -l
命令计算存在的文件总数。由于 tee
我们可以使用单行命令,而不是编写两个不同的命令,如下所示。
linuxmi@linuxmi:~/www.linuxmi.com$ ls ~ | tee linuxmi.txt | wc -l
5. 执行 Tee 时忽略中断
Ctrl + C
键盘组合来中断进程。如果您正在使用 Tee 运行一项关键任务,则可以使用-i
选项防止键盘中断 ( SIGINT
)。
[command] | tee -i [file-name]
6.隐藏 tee 输出
/dev/null
来隐藏输出。使用下面的语法。
[command] | tee output_file_name >/dev/null
7. 将 Tee 与 sudo 一起使用
linuxmi.conf
。如果我们执行下面的命令,我们会得到错误。
-
-
linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf
bash: linuxmi.conf: 权限不够
sudo
我们的命令中,如下所示。
linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf