読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

標準出力に表示しつつ、結果をファイルに保存したい場合は「tee」コマンドをつかう

標準出力に表示しつつ、結果をファイルに保存したい場合は「tee」コマンドをつかえばよいです。

$ cal | tee cal.log
      3月 2015
日 月 火 水 木 金 土
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

保存先のファイルもこの通り。

$ cat cal.log 
      3月 2015
日 月 火 水 木 金 土
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Rubyスクリプトの途中でも使えるので

$ ruby -e "puts (1..9).map {|i| 'Number:' + i.to_s}" | tee sample.log
Number:1
Number:2
Number:3
Number:4
Number:5
Number:6
Number:7
Number:8
Number:9
$ cat sample.log 
Number:1
Number:2
Number:3
Number:4
Number:5
Number:6
Number:7
Number:8
Number:9

と動きます。
また、「-a」オプションをつければ追記になります。
先ほどのコマンドに続けて実行すると、

$ ruby -e "puts (1..9).map {|i| 'Number:' + i.to_s}" | tee -a sample.log
Number:1
Number:2
Number:3
Number:4
Number:5
Number:6
Number:7
Number:8
Number:9
$ cat sample.log 
Number:1
Number:2
Number:3
Number:4
Number:5
Number:6
Number:7
Number:8
Number:9
Number:1
Number:2
Number:3
Number:4
Number:5
Number:6
Number:7
Number:8
Number:9

のように、ちゃんと追記されている事がわかります。