8 linux tee命令与例子
Linux TEE命令用于链接和重定向任务,可以将输出和/或者错误重定向到文件,它不会在终端上显示。
类似地,使用链接,一个命令的输出可以作为第二个命令的输入给出,然后进一步给第三命令等,但是一旦将输出重定向到文件,就无法将其与其他命令链接。
Linux TEE可用于将这两个结果一起实现在一起,例如:将结果存储到文件,同时将相同的输出链接到另一个命令。
在本教程中,我们将讨论如何使用Linux TEE与一些示例。
TEE命令语法
TEE命令基本上从标准输入读取并写入标准输出和文件。
以下是命令的语法:
$command | tee [OPTION]... [FILE]...
以下示例应该让我们更好地了解命令如何运作。
1)如何写入标准输出和文件
写入标准输出和文件后使用T恤并指定文件。
$sudo ls /home/smart | tee folders_of_smart.txt
现在,我们可以通过键入下面的命令来访问folders_of_smart.txt
并查看文件的内容。
$sudo nano folders_of_smart.txt
Output: folders_of_smart.txt foo.txt output.txt rootlisting.txt
2)如何写入文件并添加输出
要将输出追加到现有文件,我们将使用"-a""选项。
$sudo echo 'Movies' | tee -a folders_of_smart.txt
现在,我们可以通过键入下面的命令来访问folders_of_smart.txt
并查看文件的内容。
$sudo nano folders_of_smart.txt
Output: folders_of_smart.txt foo.txt output.txt rootlisting.txt Movies
3)如何写入多个文件
要写入多个文件,我们只需在命令行中提及他们的名称。
$sudo ping facebook.com | tee output1.txt output2.txt output3.txt
现在,我们可以通过在下面键入命令来访问"output1.txt"","Output2.txt",并查看文件的内容。
$sudo nano output1.txt
$sudo nano output2.txt
Output: PING facebook.com(edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de)) 5$ 64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$ 64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$
4)如何将一个命令的输出重定向到另一个命令
我们也可以将输出传递为输入到其他命令。
例如,以下命令不会列出folders_of_smart.txt
中的所有文件夹名称,而是通过grep ^ o
命令文件夹以字母o开始列表。
$sudo ls /home/smart | tee folders_of_smart.txt | grep ^o
output: output1.txt output2.txt output3.txt output.txt
另一个例子,我们将列出/etc
目录,然后输出存储在命名为stage1.txt
的文件中,通过Grep命令过滤以字母I开头的线路,此筛选输出存储在文件中stage2.txt
。
最后,过滤的输出使用Sort-R
命令反向排序。
此最终输出显示在终端上。
$ls /etc | tee stage1.txt | grep ^i | tee stage2.txt | sort -r
output: issue.net issue iscsi iproute2 inputrc initramfs-tools init.d init
5)如何观看日志文件并写入文件
我们可以通过使用"TEE""命令分析"HTTP2"流量通过"APACHE2"服务器,实时日志流到标准输出,并在稍后写入文件以进行进一步分析。
$sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
6)如何使用TEE写入特权文件
当我们想要写入"rootion"(如"folder_of_root.txt)的文件时,我们将在以下情况下使用
sudo之前使用
tee`命令。
$sudo echo 'Documents' | sudo tee -a folder_of_root.txt
我们将被要求获取root密码,输入root密码,更改将保存在folder_of_root.txt
中。
7)如何使用Python脚本使用TEE命令
我们可以使用使用Python脚本的"TEE"命令"将输出存储在文件中并在屏幕上显示输出,首先,我们将编写Python脚本以计算如下圆的区域,并将其保存在"区域.py"文件中。
# -*- coding: utf-8 -* """This script calculate the area of circle""" from math import pi as pi from math import ceil as ceil radius = 2.5 area = pi * radius**2 print('The area of circle is', ceil(area))
我们将更改RADIUS的值,并将输出添加到area.txt
。
$python area.py | tee -a area.txt
Output ('The area of circle is for radius 2', 13.0) ('The area of circle is for radius 2.5', 20.0) ('The area of circle is for radius 3', 29.0) ('The area of circle is for radius 3.5', 39.0)
8)如何使用带Bash脚本的TEE命令
我们可以使用Bash脚本使用TEE
命令将输出存储在文件中并在屏幕上显示输出,首先,我们将编写BASH脚本以显示此命令的输出PWD
,ls
和$home
如下,并将其保存在"bash.txt"文件中。
#!/bin/bash echo "`pwd`"; echo "`ls`"; echo "$HOME";
$./bash.txt | tee smart.txt
Output /media/disk bash.txt flask.pdf smart.py smart.txt VirtualBox-5.2-5.2.14_123301_el6-1.x86_64.rpm /home/smart