有谁知道一个适用于 Mac OS 的程序,可以将名称传递给可执行文件和要监视的文件,以便每次被监视的文件发生变化时它都会运行该可执行文件?
我想到的是这样的:
$ fwatch /Users/foo/doc.tex /Users/foo/run-pdflatex.sh &
fwatch running. Listening for changes in /Users/foo/doc.tex.
$ echo "This aint no LaTeX" > doc.tex
$ fwatch: Change in /Users/foo/doc.tex detected. Running /Users/foo/run-pdflatex.sh...
答案1
您可以使用以下方式进行设置启动。具体来说,您需要使用监视路径键入您的 launchd plist 来查找该文件中的更改。
详尽信息可在这篇 AFP548 文章。
虽然它似乎不再被开发,林贡是一个提供 GUI 方式来设置这些 launchd plist 文件的应用程序。
编辑:
大致来说,以下是使用上述示例路径的操作。将com.superuser.run-pdflatex.plist
包含以下内容的文件保存到~/Library/LaunchAgents
<?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.run-pdflatex</string>
<key>OnDemand</key>
<true/>
<key>Program</key>
<string>/Users/foo/run-pdflatex.sh</string>
<key>ProgramArguments</key>
<array>
<string>run-pdflatex.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/foo/doc.tex</string>
</array>
</dict>
</plist>
然后您可以launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plist
在终端中输入内容来加载文件监视守护程序。
以上内容尚未经过测试,但这是总体思路。
答案2
我发现样本它自称是“一个跨平台的文件变化监视器”,并且似乎支持所有适当的平台解决方案,例如 macOS 上的文件系统事件。
# Monitor all files in a directory, execute script once when something changes
fswatch -o -r path/to/directory | xargs -n1 -I{} your-command-here
答案3
您可以在 Automator 中执行此操作。我相信它位于 Automator 工作流程中的文件夹选项下(而不是在 Mac 前面)。然后您只需将脚本附加到文件夹,每次添加/更改文件时它都会触发。