监视Folder OSX进行文件更改,然后运行bash脚本[重复]


10

可能重复:
在OS X和Ubuntu上实时监视文件系统

我正在寻找一种监视OSX中本地目录的有效方法,如果该目录中的任何文件已更改,请运行bash脚本以将文件提交到github。

有没有推荐的工具来监视目录中的文件更改,然后触发操作,即bash脚本?


1
这个问题是软件推荐的基本要求,在Super User上通常是不允许的。尝试重新措辞以询问您的根本问题:“每当添加/删除/更改文件时,如何自动提交更改并从git repo推送?”
达斯Android

@DarthAndroid,常见问题解答,这个问题就目前而言很好。OP不要求购物或购买建议。
伊夫史密斯2012年

1
@eph OP正在寻求某些建议,这与主题无关。但是主要的问题是他们没有解释他们的问题,而只是要求他们尝试的解决方案。
slhck

问题很简单。监视目录中的更改并将这些更改提交到存储库。这完全是OP的问题。您提供的链接具有答案。好决定。
伊夫史密斯2012年

Answers:


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在阅读您的回答后尝试过。出色的实用程序-与inotifyLinux 非常相似,它利用了OS X的本机fsevent
CWD 2012年

2

一种选择是只使用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>

“启动”仅在文件被原子保存时对其进行注册,或者在每次保存时将其删除并重新创建。默认情况下,大多数OS X应用程序执行原子保存,但例如TextMate和vim不执行。未检测到监视文件夹的子文件夹中的更改。

launchctl unload $path && launchctl load $path 将更改应用于plist。

请参阅man launchdman launchd.plist了解更多信息。


有趣的方法。我会看一看并回复您。感谢您的反馈。
Tegan Snyder

这种方法肯定有其局限性。您无法检测到监视文件夹的子文件夹中的更改。该技术也不会告诉您哪个文件有事件(新文件,修改,删除等),而只是路径中有事件。
Volomike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.