Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

標準出力に表示しつつ、結果をファイルに保存したい場合は「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

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