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