ファイルの変更についてフォルダOSXを監視し、bashスクリプトを実行する[重複]


10

重複の可能性:
OS XおよびUbuntuでファイルシステムをリアルタイムで見る

OSXのローカルディレクトリを監視する効率的な方法を探しています。そのディレクトリでファイルが変更されている場合は、bashスクリプトを実行してファイルをgithubにコミットします。

ファイルの変更についてディレクトリを監視し、アクション(bashスクリプト)をトリガーするための推奨ツールはありますか?


1
この質問は現状のままソフトウェアの推奨事項であり、通常、スーパーユーザーでは許可されていません。「ファイルを追加、削除、変更するたびに、変更を自動的にコミットしてgitリポジトリからプッシュするにはどうすればよいですか?」
ダースAndroid

@ DarthAndroid、FAQによると、この質問は現状では問題ありません。OPは買い物や購入のアドバイスを求めていません。
エフスミス2012

1
@eph OPは、トピックとはかなり関係のない、何かの推奨事項を求めています。しかし主な問題は、彼らが彼らの問題を説明しておらず、彼らが試みた解決策のみを求めていることです。
slhck

問題は簡単です。ディレクトリの変更を監視し、それらの変更をリポジトリにコミットします。それはすべてOPの問題です。あなたが提供したリンクは答えを持っています。よかった。
エフスミス2012

回答:


19

リポジトリからfswatchを使用する:

fswatch . 'git commit -avm "snapshot at ${date}"'

この単純な例では、すでにリポジトリにあるファイルへの変更のみをキャッチします。


これは、OS Xに組み込まれているフォルダーアクションで実行できます。上記のslhkが提供するリンクを介して回答を参照してください。
エフスミス2012

1
OPが達成したいことを説明する例を追加することで、答えを広げることができます。リンクを投稿するだけではお勧めできません。
slhck

これは励みに見えます。./fswatch / some / dir ./some/dir/bash_script.sh
Tegan Snyderを

+1- fswatchあなたの答えを読んだ後、私は試しました。優れたユーティリティinotifyfsevent
-Linux

2

1つのオプションは、launchdを使用することです。このようなプロパティリストをとして保存し、ログアウトしてから、またはログアウトして再度~/Library/LaunchAgents/com.superuser.445907.plistロードしてロードlaunchctl load ~/Library/LaunchAgents/com.superuser.445907.plistします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.445907</string>
    <key>Program</key>
    <string>/Users/username/script</string> <!-- ~/ doesn't work -->
    <key>WatchPaths</key>
    <array>
        <string>/Users/username/Folder/</string>
    </array>
    <key>ThrotteInterval</key>
    <integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>

Launchedは、ファイルがアトミックに保存されたときに変更を登録するか、ファイルが保存されるたびに削除して再作成します。ほとんどのOS Xアプリケーションはデフォルトでアトミック保存を実行しますが、たとえばTextMateやvimは実行しません。監視フォルダーのサブフォルダーの変更は検出されません。

launchctl unload $path && launchctl load $path plistに変更を適用します。

詳細についてはman launchd、およびman launchd.plistを参照してください。


興味深いアプローチ。私はそれを見て、あなたに戻ります。フィードバックをお寄せいただきありがとうございます。
Tegan Snyder

この方法には明らかに制限があります。監視フォルダーのサブフォルダーの変更は検出できません。また、この手法では、どのファイルにイベント(新しいファイル、変更、削除など)があったかはわかりません。パスにイベントがあっただけです。
Volomike 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.