GNU Core Utilities/tee
tee
コマンドは、標準入力からのデータを標準出力に表示するとともに、指定されたファイルにも書き込むためのコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。
基本的な使い方
編集tee [オプション] ファイル...
主なオプション(GNU coreutils版)
編集主なオプション オプション 説明 -a, --append
既存のファイルにデータを追記する -i, --ignore-interrupts
インタラプト信号を無視する -p, --pipe
複数のファイルに同時に書き込む -v, --verbose
書き込み先のファイル名を表示 -u, --unbuffered
出力をバッファリングせずに行う
例
編集標準入力を標準出力とファイルに書き込む
編集echo "Hello, World!" | tee output.txt
標準入力("Hello, World!")を標準出力に表示し、同時に output.txt
に書き込む。
ファイルに追記する
編集echo "New Line" | tee -a output.txt
標準入力("New Line")を output.txt
に追記する。
複数のファイルに同時に書き込む
編集echo "Multiple files" | tee file1.txt file2.txt
標準入力("Multiple files")を file1.txt
と file2.txt
の両方に書き込む。
インタラプト信号を無視して動作する
編集echo "Data" | tee -i output.txt
インタラプト信号を無視して output.txt
に書き込む。
バッファリングせずに出力する
編集echo "Unbuffered Output" | tee -u output.txt
標準入力("Unbuffered Output")をバッファリングせずに output.txt
に書き込み、標準出力にも表示する。
FreeBSD 版との違い
編集FreeBSD でも tee
コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。
主な違い:
編集-p
(複数のファイルに同時に書き込む)オプションがない- FreeBSD の
tee
には-p
オプションがありません。複数のファイルに書き込むには、複数回tee
を使用するか、シェルのリダイレクトを利用する必要があります。
- FreeBSD の
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとgtee
という名前で GNU 版のtee
が使える。
pkg install coreutils gtee -a output.txt # GNU版の tee を使用
詳しくは、それぞれの環境で man tee
を確認してください。