| 開発者 | AT&T ベル研究所、マイク・パーカー、リチャード・ストールマン、デビッド・マッケンジー、マイクロウェア、ジム・ホール、JP ソフトウェア、マイクロソフト |
|---|---|
| 初回リリース | 1974年6月 |
| 書かれた | C |
| オペレーティング·システム | Unix、Unix ライク、Plan 9、Inferno、OS-9、FreeDOS、Windows、ReactOS、IBM i |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | FreeDOS: GPL-2.0以降 ReactOS: GPLv2 Plan 9: MITライセンス |
コンピューター科学において、標準ストリームを使用するコマンドラインインタープリタ(シェル)のコマンドteeであり、標準入力を読み取り、それを標準出力と1つ以上のファイルの両方に書き込み、入力を効果的に複製します。[1]主にパイプやフィルターと組み合わせて使用されます。このコマンドの名前は、配管で使用されるTスプリッタにちなんで付けられました。[2]
概要

ls -lにリダイレクトされ、出力はファイルfile.txtと pager にコピーされます。teeという名前はこのスキームに由来しており、大文字のTのように見えます。lessコマンドteeは通常、プログラムの出力を分割して、表示とファイルへの保存の両方を行うために使用されます。 コマンドは、データが別のコマンドまたはプログラムによって変更される前に、中間出力をキャプチャするために使用できます。 tee コマンドは標準入力を読み取り、その内容を標準出力に書き込みます。同時に、データを指定されたファイルまたは変数にコピーします。 構文は、コマンドの実装によって異なります。
実装
このコマンドは、UnixおよびUnix系 オペレーティングシステム、Microware OS-9、[3] DOS(4DOS、FreeDOSなど)、Microsoft Windows(4NT、Windows PowerShellなど)、およびReactOSで使用できます。[4] Linuxteeコマンドは、Mike Parker、Richard Stallman、およびDavid MacKenzieによって作成されました。[5]このコマンドは、一般的なGNU Unix系ユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、 Microsoft Windows用の別のパッケージとして使用できます。 [6] FreeDOSバージョンはJim Hallによって開発され、 GPLの下でライセンスされています。[7]
teeコマンドは、 IBM iオペレーティングシステムにも移植されています。[8]
さらにsponge[9]コマンドも同様の機能を提供します。
UnixおよびUnixライク
tee [ -a ] [ -i ] [ ファイル ... ]
引数:
File ...出力を受け取るファイルのリスト。
フラグ:
-a出力を各ファイルに上書きするのではなく、追加します。-i割り込みを無視します。
このコマンドは次の終了値 (終了ステータス) を返します。
- 0 標準入力がすべての出力ファイルに正常にコピーされました。
- >0 エラーが発生しました。
プロセス置換を使用すると、複数のプロセスが元のプロセスの標準出力を読み取ることができます。GNU Coreutils の tee 呼び出しの例を参照してください。
注意: 正常に開かれたファイル オペランドへの書き込みが成功しなかった場合、正常に開かれた他のファイル オペランドと標準出力への書き込みは続行されますが、終了値は >0 になります。
4DOS と 4NT
TEE [/A] ファイル...
引数:
file「tee'd」出力を受け取る 1 つ以上のファイル。
フラグ:
/Aパイプラインの内容を上書きするのではなく、出力ファイルに追加します。
注意: tee をパイプで使用すると、前のコマンドの出力が一時ファイルに書き込まれます。そのコマンドが終了すると、tee は一時ファイルを読み取り、出力を表示し、コマンドライン引数として指定されたファイルに書き込みます。
Windows PowerShell
tee [-FilePath] <文字列> [-InputObject <PSObject>] tee -Variable <文字列> [-InputObject <PSObject>]
引数:
-InputObject <PSObject>コマンドレットに入力するオブジェクトを指定します。パラメーターは、オブジェクトを含む変数と、オブジェクトを返すコマンドまたは式を受け入れます。-FilePath <String>コマンドレットがオブジェクトを保存するファイルを指定します。このパラメーターは、単一のファイルに解決されるワイルドカード文字を受け入れます。-Variable <String>入力オブジェクトへの参照が指定された変数に割り当てられます。
注: teeはReadOnly コマンド エイリアスとして実装されています。内部コマンドレット名は ですMicrosoft.PowerShell.Utility\Tee-Object。
例
UnixおよびUnixライク
- コマンド ( lint ) からの出力を同時に表示および保存するには:
lint プログラム.c | teeプログラム.lint
これにより、コマンドの標準出力がlint program.cコンピューターに表示され、同時にそのコピーがファイル に保存されますprogram.lint。 という名前のファイルprogram.lintがすでに存在する場合は、削除されて置き換えられます。
同様に、stdout と stderr の両方の出力ストリームを標準出力にリダイレクトし、program.lintストリーム リダイレクトを使用することもできます。
lint プログラム.c 2 > & 1 | teeプログラム.lint
- コマンドの出力を表示し、既存のファイルに追加するには:
lint プログラム.c | tee -aプログラム.lint
これにより、コンピューターにコマンドの標準出力が表示されlint program.c、同時にそのコピーがprogram.lintファイルの末尾に追加されます。program.lintファイルが存在しない場合は作成されます。
- 権限のエスカレーションを許可するには:
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
この例では、tee を使用してsudoコマンドの固有の制限を回避しています。sudoは標準出力をファイルにパイプできません。stdout ストリームを にダンプすることで/dev/null、コンソールのミラー出力も抑制します。上記のコマンドは、ユーザーの公開キーをサーバーのキー認証リストにインストールすることで、現在のユーザーに ssh 経由でサーバーへのルート アクセスを許可します。
Bashでは、プロセス置換を使用することで、表示される出力に影響を与えずに、ファイルに書き込まれる前に出力をフィルタリングできます。たとえば、
ls --color = always | tee > ( sed "s/\x1b[^m]*m//g" > ls.txt )
に書き込む前に一般的なANSIエスケープコードを削除しますls.txtが、表示用に保持します。[10]
4DOS と 4NT
この例では、ファイル内wikipedia.txtで文字列「4DOS」を含む行を検索し、一致する行のコピーを作成し4DOS.txt、行をソートして、出力ファイル に書き込みます4DOSsorted.txt。
> 「4DOS」 wikipedia.txtを検索| 4DOS.txt を検索|並べ替え> 4DOSsorted.txt
Windows PowerShell
- コマンドの出力を同時に表示および保存するには:
ipconfig | tee出力ファイル. txt
これにより、コマンドの標準出力がコンソール ウィンドウipconfigに表示され、同時にそのコピーがファイルに保存されます。
OutputFile.txt
- 実行中のすべてのプロセスを表示して保存し、svc で始まり、1000 を超えるハンドルを所有するプログラムのみが出力されるようにフィルタリングするには、次のようにします。
Get-Process | Where-Object { $_ . Name -like "svc*" } | Tee-Object ABC . txt | Where-Object { $_ . Handles -gt 1000 }
この例では、 teeのパイプ入力をフィルタリングできること、およびteeを使用してその出力を表示し、その出力が再度フィルタリングされて 1000 を超えるハンドルを所有するプロセスのみが表示されるようにし、フィルタリングされていない出力をファイルに書き込むことを示していますABC.txt。
- Windows Powershell はバイナリ データや生データには適しておらず、ストリームを常にテキストとして扱い、転送時にデータを変更します。
参照
参考文献
- ^ 「tee (posix セクション 1) のマニュアル ページ」。IEEE Std 1003.1、2003 版、情報技術の標準 - ポータブル オペレーティング システム インターフェイス (POSIX)、The Open Group 基本仕様第 6 版。2013年12 月 1 日に閲覧。
- ^ 「Unix では、わかりにくい名前のコマンドは何を表していますか?」2012 年2 月 3 日閲覧。
- ^ ポール・S・ダヤン(1992年)。OS -9の達人 - 1:事実。ギャラクティック・インダストリアル・リミテッド。ISBN 0-9519228-0-7。
- ^ “reactos/reactos”. GitHub . 2022年1月3日.
- ^ 「tee: 標準入力から読み取り、標準出力とファイルに書き込む」www.mankier.com。
- ^ 「いくつかの GNU ユーティリティのネイティブ Win32 ポート」unxutils.sourceforge.net。
- ^ 「ibiblio.org FreeDOS パッケージ -- tee (Unix ライク)」。www.ibiblio.org。
- ^ IBM . 「IBM System i バージョン 7.2 プログラミング Qshell」(PDF) . IBM . 2020 年9 月 5 日閲覧。
- ^ 「sponge(1): stdinを吸収してファイルに書き込む - Linux manページ」. linux.die.net .
- ^ 「GNU Coreutils: tee 呼び出し」。2016年2 月 3 日閲覧。
さらに読む
外部リンク
- Linux I/O リダイレクトの紹介「Linux I/O リダイレクト」2012 年 6 月 10 日にWayback Machineにアーカイブされました。
- GNU ティーマニュアル
- : 標準入力の重複 – シェルおよびユーティリティ リファレンス、The Single UNIX 仕様、バージョン 4、The Open Group
- – Plan 9プログラマーズマニュアル、第 1 巻
- – インフェルノ一般コマンドマニュアル
- Delphi-Tee - Delphi (ソフトウェア) オープンソース実装
