在 Mac OS X 上运行文件更改脚本

Joh*_*nes 10 unix macos

任何人都知道 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...
Run Code Online (Sandbox Code Playgroud)

gho*_*ppe 8

您可以使用launchd进行设置。具体来说,您需要使用launchd plist 中的watchpaths键来查找该文件中的更改。

这篇 AFP548 文章中提供了详尽的信息。

尽管看起来它不再处于开发阶段,Lingon是一个应用程序,它提供了一种 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>
Run Code Online (Sandbox Code Playgroud)

然后您将launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plist在终端中输入以加载您的文件监视守护程序。

以上未经测试,但这是总体思路。