複数ファイルへの出力
teeコマンドには複数のファイルパスを空白区切りで渡せる。渡したすべてのファイルに標準入力の内容を出力する。
コマンド | tee ファイルパス1 ファイルパス2 ファイルパス3 ...
$ echo hello | tee file1.txt file2.txt file3.txt
hello
$ cat file1.txt file2.txt file3.txt
hello
hello
hello
標準出力にも出力されるため、画面で内容を確認しながら3つのファイルすべてに同時保存できる。
一部のファイルへの出力が失敗した場合
渡したパスの一部が書き込めない場合、teeコマンドはそのパスへの書き込みだけをエラーとして報告し、残りのファイルへの出力は続ける。
$ mkdir dir1
$ echo x | tee file1.txt dir1 file2.txt
x
tee: dir1: Is a directory
$ echo $?
1
$ cat file1.txt file2.txt
x
x
dir1への書き込みはエラーになるが、file1.txtとfile2.txtにはxが出力されている。終了ステータスは1になるため、シェルスクリプトでは終了ステータスを確認して失敗を検知する。
用途
同じ内容を複数の場所に保存したい場合、たとえばログを共有ディレクトリとローカルディレクトリの両方に残したい場合などに使える。-aと組み合わせれば、複数ファイルへの追記も可能。
\第一線のプログラマーの行動原理を学べる!/
