Linux 中的 9 个 tee 命令示例

[ad_1]

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 命令示例

[ad_2]

Related Posts