UNIXの部屋 コマンド検索: tee

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


検索 :
複数のキーワードを空白で区切ると AND 検索を行います。例:「ファイル 削除」


tee パイプからの入力を標準出力と指定ファイルに書き出す(パイプ)

あるコマンドの出力をパイプを使って他のコマンドに渡したいが、画面にも表示したい、という場合、tee を使う。
% ls | tee sample
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
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
このように ls の出力と sample の内容は同じになる。

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 の両方に出力する。

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

`T' の文字の形のように、1つの流れを2つに分岐させることから tee という名前が付けられた。
>> コマンド Tee *
>> 読み方 tee *

tee (UNIXコマンド) [てぃー]

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