このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

標準出力とファイルの両方に出力する:teeコマンド

teeコマンドの概要

 「tee」コマンドは、標準入力からのデータを標準出力とファイルに同時に書き出すためのコマンドです。これにより、コマンドの出力を画面に表示しながら、同時にファイルに保存することができます。パイプライン内でデータを処理しつつ、出力内容を保存して後から確認する際に便利です。

コマンドの主なオプション

オプション説明
-aファイルに追記します。既存の内容を上書きせずに追加します。
コマンドの主なオプション

コマンドの使用例と解説

1.基本的な使用例

・「ls | tee output.txt」コマンドを実行します。

 「ls」コマンドの出力を画面に表示すると同時に 「output.txt」ファイルに書き込みます。ファイルが存在しない場合、新しいファイルが作成されます。存在する場合、内容が上書きされます。

user01@ubuntu-vm:~$ ls | tee output.txt
output.txt
snap
ダウンロード
テンプレート
デスクトップ
ドキュメント
ビデオ
ピクチャ
ミュージック
公開
2.ファイルに追記

・「echo "New line" | tee -a output.txt」コマンドを実行します。

 「echo」コマンドの出力を画面に表示すると同時に「output.txt」ファイルに追記します。「-a」オプションにより、既存の内容は保持され、新しい行がファイルの末尾に追加されます。

user01@ubuntu-vm:~$ echo "New line" | tee -a output.txt
New line
3.複数ファイルへの書き込み

・「ls | tee output1.txt output2.txt」コマンドを実行します。

 「ls」コマンドの出力を画面に表示しつつ、「output1.txt」と「output2.txt」の両方に同時に書き込みます。

user01@ubuntu-vm:~$ ls | tee output1.txt output2.txt
output.txt
snap
ダウンロード
テンプレート
デスクトップ
ドキュメント
ビデオ
ピクチャ
ミュージック
公開
4.パイプライン内での使用

・「ps aux | grep httpd | tee httpd_processes.txt」コマンドを実行します。

 実行中のプロセスリストから「httpd」を含む行を検索し、その結果を画面に表示しつつ「httpd_processes.txt」ファイルに書き込みます。

user01@ubuntu-vm:~$ ps aux | grep httpd | tee httpd_processes.txt
user01      5600  0.0  0.1  10140  2432 pts/0    S+   22:49   0:00 grep --color=auto httpd
user01      5601  0.0  0.1   9812  2304 pts/0    S+   22:49   0:00 tee httpd_processes.txt
ファイルの削除

この演習のコマンドで作成したファイルを削除します。

・「rm httpd_processes.txt output*」コマンドを実行して、「ls」コマンドで確認します。

user01@ubuntu-vm:~$ rm httpd_processes.txt output*
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「tee」コマンドは、コマンドの出力を画面に表示すると同時にファイルに保存する際に非常に便利です。特に、ログを取りながらリアルタイムで出力を確認したい場合や、複数のファイルに同時に出力を記録したい場合に役立ちます。「-a」オプションを使用すると、既存のファイル内容を保持しつつ、新しいデータを追記することができます。