2009年11月12日木曜日

tail -f, tee

例えば、リダイレクトでファイルへ出力中にファイル末尾を動的に見たいとき、こんなことをするらしい。
% tail -f filename
そうするとファイルが書き込まれるたびに末尾がぞろぞろと動的に出てくる。これは便利。

これをperlでも実現できるみたい。基本的にtailが無い時に使える。

# ファイルを開く
open( INPUT, "<$ARGV[0]" ) or die; # ファイルの末尾まで移動する
seek( INPUT, 0, 2 );
# ファイルの監視を開始する
while ( 1 ) {
# 一行ずつ読み込み続け、表示する while ( < input > ) {
print $_;
}

# 50ミリ秒待って再度読み込む
select( undef, undef, undef, 0.05 );
}

参考URL

もともとは、perlで時間を指定してプログラムを制御できないかなぁと考えていたところ、こんなサイトを見つけたので、儲けもん。スリープを使えばいいのね。


今現在、センシングしたデータをリアルタイムでプロットするスクリプトが作れたら面白れーと思っていたので、ちょっとした収穫。

ということでメモ。

あ、あと追記。
コマンドのリダイレクトをするとファイルへ出力できて便利なんだけど、そのかわり標準出力をしなくなる。
ファイルへ出力をするけれども、標準出力をしたい!って時にはこんな欲張りなコマンドを。

% command | tee filename

これは便利。

0 件のコメント: