2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

fswatch と、perl の -x

Posted at

OS X。

launchctl がファイルの監視をすると言っても、存在の有無程度。
ファイルが更新されたかどうかなどの、細やかなチェックは別途考えなきゃならない。

ってんで、 fswatch

インストール

brew。

$ brew install fswatch

使い方

$ fswatch FILE

で FILE が更新されたら、stdout にパスが表示される。

  • -o を効かせたら、フラグ(1)だけを出力する事が可能。
  • -l で告知までの待ち時間を指定出来る。
    • 対人では、変更直後に変更を繰替えす様な人に対応する為に、多めに取っとくのが吉か?

プログラム

仕様上、launchd に優しくない。

以前のバージョンは、

$ fswatch FILE COMMAND

なる構文が可能で、これだと、 .plist の ProgramArguments にさくっと記載出来るものの、現在は廃止。

$ fswatch -o FILE | xargs -I {} COMMAND

を使えとの事。

ProgramArguments は、文字通りの引数であって、シェルじゃないから、パイプやらリダイレクションやらは一切効かない。てな訳で、上記の行を、 .sh にして、それを読み込むと言う、なんだかなーーな状況になる1

ぼやいてても仕方ないので自作。

exec_fswatch.sh
#!bin/sh

fswatch_exe=${HOME}/cmd/homebrew/bin/fswatch
file_path=/PATH/TO/FILE
$fswatch_exe -o -l 10 $file_path | xargs -I {} perl -x $0
exit 0


#!/usr/bin/env perl
print "changed\n" ;

perl で実行してみて挙動確認後2

$ perl -x exec_fswatch.sh

モニタ開始。

$ sh ./exec_fswatch.sh

上手く監視出来てるのを確認したら、 .plist 書いてデーモン化。

  1. fswatch-run も今一、、、

  2. キモの -x は、perldoc perlrun にて確認を。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?