01 / 06
`>` だと画面が見えない
> でファイルに残すと、画面には何も出ないよね。うまくいったのか分からないので、あとで cat して確かめることになる。
```
ls > ichiran.txt
cat ichiran.txt # 確かめるためにもう1回
```
両方いっぺんにできたら楽だよね。それをするのが tee だよ。
つなぐ
INPUT · スライド
01 / 06
> でファイルに残すと、画面には何も出ないよね。うまくいったのか分からないので、あとで cat して確かめることになる。
```
ls > ichiran.txt
cat ichiran.txt # 確かめるためにもう1回
```
両方いっぺんにできたら楽だよね。それをするのが tee だよ。
02 / 06
名前の由来はアルファベットの T だよ。水道管の T 字の継手(つぎて)を思い出して。1本入って2本出る形だね。
```
ls | tee ichiran.txt
```
受け取ったものをファイルに書き、同時に出口にも出すんだ。だから画面にも出るし、ファイルにも残る。
> の代わりに使えると思っていいよ。違いは「画面にも出るかどうか」だけだよ。
~ $ ls | tee ichiran.txtkiroku.txtkudamono.txtnamae.txt~ $ cat ichiran.txtkiroku.txtkudamono.txtnamae.txt03 / 06
tee の本当の値打ちはここだよ。パイプの途中に挟めるんだ。
```
sort kudamono.txt | tee sorted.txt | uniq -c
```
流れはこう。
1. sort の結果が tee に届く
2. tee が sorted.txt に書く
3. 同時に uniq -c にも渡す
流れを止めずに、途中の様子を取っておけるんだよ。> だとそこで流れが終わってしまうので、これは tee にしかできないことだよ。
04 / 06
5段つないだパイプの結果が思った通りでないとき、どこが悪いか分からないよね。そこで tee を挟むんだ。
```
A | tee 1.txt | B | tee 2.txt | C
```
こうすると、A の出力が 1.txt、B の出力が 2.txt に残る。あとから順に開いて、どの段で変になったかを確かめられるんだ。
プログラムを書く人は、これを「途中で print して確かめる」のと同じことだと感じるはずだよ。パイプでの調べ方はこの tee なんだ。
05 / 06
> に対する >> と同じで、tee にも足すやり方があるよ。-a(append)だよ。
```
date | tee -a kiroku.txt
```
それと、書き先をいくつも並べられるよ。
```
ls | tee a.txt b.txt c.txt
```
同じものを3つのファイルに同時に書けるんだ。> ではできないことだよ(> は1つだけ)。
画面に出したくないなら、うしろに > /dev/null を足せばいいよ。「ファイルにだけ書く tee」という使い方もあるんだ。
06 / 06
kudamono.txt(果物6行)、namae.txt(名前3行)、kiroku.txt(見出し1行)があるよ。
この回で意識してほしいのは流れが続いているかどうかだよ。
> … 流れはそこで終わるtee … 流れは続くこの違いが分かれば tee は使えるようになるよ。