UNIX/Linuxの部屋 コマンド:tee

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド tee パイプからの入力を標準出力と指定ファイルに書き出す(パイプ) このエントリーをはてなブックマークに追加

最終更新


UNIX/Linux の tee コマンドは、あるコマンドの出力を画面に表示しつつ、ファイルにも保存するいが、画面にも表示したい、という場合に使用するコマンドである。



tee コマンドの基本的な使い方
tee コマンドは、下記のように使用する。
% コマンド | tee ファイル

こうすることで、コマンドの出力を画面に表示しつつファイルにも保存することができる。

例えば下記の例であれば、画面上に出力された内容が、sample.log にも記録されていることがわかるだろう。
% ls | tee sample.log
total 954
-rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1
-rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2
% cat sample.log
total 954
-rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1
-rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2

tee コマンドの便利な使い方
tee コマンドは、make コマンドの実行時に使うと便利。make コマンドは、エラーが起こったとき途中で終了せずに、そのまま make の処理を続けることがある。その場合、どこで失敗したのか画面上で確認したくても、既に画面上からスクロールしてしまっている。だからといって、
% make >& make-log (csh・tcsh の場合)
% make >make-log 2>&1 (sh・bash の場合)
と、出力をファイルにリダイレクトしてしまうと、画面上で処理過程を見ることができない。

そういうときは
% make |& tee make-log (csh・tcsh の場合)
% make 2>&1 | tee make-log (sh・bash の場合)
とすると、コンパイル結果を画面で確認しつつ、ファイル make-log にコンパイルの過程を書き込むことができる。コンパイルが失敗すると、すぐに画面上で確認できる上に、make コマンド終了後にゆっくりログファイルを見て、どこで失敗したかを知ることができる。

複数ファイルへの出力
出力ファイルを複数指定することで、2つ以上のファイルに出力することも可能。
% command | tee out-1.log out-2.log
⇒ command の出力を out-1.log と out-2.log の両方に出力する。

ファイルへの追記
tee コマンドに -a オプションを付けることで、ファイルに追記することができる。
% command | tee -a command.log
⇒ command.log が存在した場合、末尾に追記する。

関連コマンド
リダイレクト全般について知りたい場合、下記を参照。

sh・bash での exec コマンドによるリダイレクトも参考にしてほしい。

ファイル出力だけではなく、任意のコマンドにデータを渡すことができる Tee コマンドなるものも存在する。

>> FreeBSDオンラインマニュアル(man) FreeBSD tee(1)
>> Solaris10オンラインマニュアル(man) Solaris10 tee(1)
>> Linuxオンラインマニュアル(man) Linux tee(1)
>> Linuxオンラインマニュアル(man) Linux tee(2)

読み方 tee (UNIXコマンド) [てぃー] このエントリーをはてなブックマークに追加

データの流れが T の字だから tee という名前になった。配管屋はチーズ(tees)と言うらしい。