在本文中,我们将展示如何在Linux系统上使用tee命令。内容有:tee命令的基本语法、基本用法、将输出写入多个文件、将输出附加到文件、忽略中断、隐藏输出、使用tee和sudo、在shell脚本中使用tee命令。
简介 tee命令读取标准输入(stdin)并将结果同时写入标准输出(stdout)和一个或多个文件。 它基本上在终端上显示命令输出,同时将输出重定向到文件。我经常使用tee命令在root用户文件中添加一个新行。
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命令输出:
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命令的用法。
相关主题 |