云网牛站
所在位置:首页 > Linux命令 > 在Linux系统上使用tee命令的基本语法和7个用法示例

在Linux系统上使用tee命令的基本语法和7个用法示例

2021-07-15 15:00:36作者:戴均力稿源:云网牛站

在本文中,我们将展示如何在Linux系统上使用tee命令。内容有:tee命令的基本语法、基本用法、将输出写入多个文件、将输出附加到文件、忽略中断、隐藏输出、使用tee和sudo、在shell脚本中使用tee命令。

 

简介

tee命令读取标准输入(stdin)并将结果同时写入标准输出(stdout)和一个或多个文件。

它基本上在终端上显示命令输出,同时将输出重定向到文件。我经常使用tee命令在root用户文件中添加一个新行。

在Linux系统上使用tee命令的基本语法和7个用法示例

 

tee命令的基本语法

[command] | tee [options] [filename]

中文翻译为:

[命令] | tee [选项] [文件名]

 

tee命令的7个用法示例

1、tee命令的基本用法

tee命令的基本用途之一是显示命令的标准输出(stdout)并将其保存在文件中。例如,我们执行了‘hostnamectl’命令来打印我们系统的主机名和其他详细信息,然后将标准输出保存到‘host_info.txt’:

$ hostnamectl | tee host_info.txt

Static hostname: ywnz

Icon name: computer-laptop

Chassis: laptop

Machine ID: 7a138ee71db94e8785d1a4dbe54dde7e

Boot ID: 34d27941b74941a9a29bc424f66613bc

Operating System: openSUSE Leap 15.2

CPE OS Name: cpe:/o:opensuse:leap:15.2

Kernel: Linux 5.3.18-lp152.75-default

Architecture: x86-64

参考:在Ubuntu 20.04上用hostnamectl命令设置或更改主机名(Hostname)

可以使用cat命令查看‘host_info.txt’文件的内容,如下所示:

$ cat host_info.txt

2、将输出写入多个文件

这也可以将输出写入多个文件。为此,添加一个由空格分隔的文件列表作为参数:

$ command | tee file1 file2…fileN

3、将输出附加到文件

默认情况下,每次运行tee命令时都会覆盖文件的内容。要附加输出,请使用“-a或--append”选项:

$ command | tee -a file

4、忽略中断

此选项允许tee命令在命令在执行过程中被(CTRL+C)中断时正常退出。为此,请使用“-i或--ignore-interrupts”选项:

$ command | tee -i file

例如:即使在ping被“Ctrl+C”中断后,tee命令也会正确写入ping命令输出:

在Linux系统上使用tee命令的基本语法和7个用法示例

5、隐藏输出

如果不想将命令结果打印到标准输出,请使用以下格式:

$ command | tee file >/dev/null

6、使用tee和sudo

tee命令允许您写入由root用户或其他人拥有的文件。例如,如果您想在下面的文件中添加一个新行,您将收到“权限被拒绝(permission denied)”错误,因为sudo不执行输出的重定向:

$ sudo echo "add a newline" > /etc/sudoers

bash: /etc/sudoers: Permission denied

为此,请使用tee命令,如下所示:

$ echo "add a newline" | sudo tee -a /etc/sudoers

7、在shell脚本中使用tee命令

tee命令通常可用于shell脚本以将输出重定向到文件,如下所示:

$ vi /tmp/testbash.sh

#!/bin/bash

LOGFILE=/tmp/test-logs-$(date +%d%m%Y)

echo "Append the logs routinely" | tee -a $LOGFILE

 

结语

在本文中,我们向您展示了如何在Linux中使用tee命令,按照上面所讲的基本使用方法就能掌握好tee命令的用法。

 

相关主题

Linux下使用>和>>重定向运算符或tee命令将文本写入文件

Linux命令子频道
精选文章
热门文章