標準出力に表示しつつ、結果をファイルに保存したい場合は「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 -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のように、ちゃんと追記されている事がわかります。
参考もと
- man tee
- UNIXの部屋 コマンド検索:tee (*BSD/Linux)