
Linux teeコマンドは、タスクのチェーンとリダイレクトに使用されます。出力やエラーをファイルにリダイレクトでき、端末には表示されません。同様に、チェーンを使用すると、1つのコマンドの出力を、2番目のコマンド、さらに3番目のコマンドへの入力として指定できますが、出力をファイルにリダイレクトすると、他のコマンドとチェーンすることはできません。
Linux teeを使用すると、これらの両方の結果を一緒に実現できます。つまり、同じ出力を別のコマンドにチェーンしながら、結果をファイルに保存できます。
このチュートリアルでは、いくつかの例を使用してLinuxteeの使用方法について説明します。
Teeコマンド構文
teeコマンドは、基本的に標準入力から読み取り、標準出力とファイルに書き込みます。コマンドの構文は次のとおりです。
$ command | tee [OPTION]... [FILE]...
次の例は、コマンドがどのように機能するかについてのより良いアイデアを私たちに与えるはずです。
1)標準出力とファイルへの書き込み方法
標準出力とファイルに書き込むには、パイプの後にteeを使用して、ファイルを指定します。
$ 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
という名前のファイルに保存されます。 、この出力は、文字iで始まる行に対してgrepコマンドでフィルタリングされます。このフィルタリングされた出力は、ファイル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)ログファイルを監視してファイルに書き込む方法
HTTP2
を分析できます apache2
を通過するトラフィック tee
を使用したサーバー コマンド、ライブログを標準出力にストリーミングしたり、後でさらに分析するためにファイルに書き込んだりすることもできます。
$ sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
6)teeを使用して特権ファイルに書き込む方法
root
が所有するファイルに書き込みたい場合 folder_of_root.txt
のように 、sudo
を使用します tee
の前 以下の例のようなコマンド。
$ sudo echo 'Documents' | sudo tee -a folder_of_root.txt
ルートパスワードの入力を求められ、ルートパスワードを入力すると、変更がfolder_of_root.txt
に保存されます。 。
7)Pythonスクリプトでteeコマンドを使用する方法
tee
を使用できます Pythonスクリプトを使用してコマンドを実行し、出力をファイルに保存して画面に表示します。まず、Pythonスクリプトを記述して、円の面積を次のように計算し、area.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コマンドを使用する方法
tee
を使用できます 出力をファイルに保存して画面に出力を表示するbashスクリプトを使用したコマンド最初に、このコマンドの出力を表示する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
teeコマンドは非常に驚くべきツールであり、標準入力を読み取り、標準出力と1つ以上のファイルの両方に書き込むことができます。
関連項目:
- 例でLinuxTrコマンドを使用する方法