每次保存文件时执行的linux(和OSX)shell命令

每次保存文件时执行的linux(和OSX)shell命令,linux,file,macos,shell,Linux,File,Macos,Shell,我试图让jsdoc在保存javascript文件时自动生成。我有一个工作脚本,它存储文件的上次更新时间(当前硬编码),并与该文件的当前时间戳进行比较。我在一个while循环中运行它,直到按下CTRL-C,然后插入一个0.1秒的睡眠以停止占用处理器 这是工作脚本: while : do if [ $(( lastTime )) -ne `stat -f %m -t %s javascript.js` ] then lastTime=`stat -f %m -t %s javasc

我试图让jsdoc在保存javascript文件时自动生成。我有一个工作脚本,它存储文件的上次更新时间(当前硬编码),并与该文件的当前时间戳进行比较。我在一个while循环中运行它,直到按下CTRL-C,然后插入一个0.1秒的睡眠以停止占用处理器

这是工作脚本:

while :
do

if [ $(( lastTime )) -ne `stat -f %m -t %s javascript.js` ]
then
        lastTime=`stat -f %m -t %s javascript.js`
        # custom jsdoc generating script
        jsdoc javascript.js
        echo +++ Run: `date`  +++
fi

# stops while loop from consuming a lot of resources
# and making my fan whirr like he wants the computer to take off
sleep .1

done
我知道有更好的方法,只是不是那种方法。谢谢你的帮助

编辑:对于安装了inotify工具的linux机器的更新这应该可以工作

#!/bin/bash

# with inotify-tools installed...

# only watches first parameter for modification
while inotifywait -e modify $1; do
        echo
        echo +++ Building JSDocs +++
        jsdoc $@
        echo +++ Last run: `date`  +++
done

但是,我希望它在Linux和OSX shell上都能工作,因此我可以在这两种环境中使用

有一个名为
INotify
的Linux内核功能,它监视文件系统的任何更改。它作为许多系统API公开


对于脚本,有一个名为的包,它允许脚本访问通知系统。

只是一个建议,为什么不将其编码到编辑器vi/emacs中?创建保存文件并运行jsdoc的宏。在vi中,您可以使用
:!jsdoc%
%扩展为当前正在编辑的文件的名称。要保存并在一行中运行-
:w |!jsdoc%
很好的答案-对于linux来说,这很好,但我忘了提到我也需要OSX,而且inotify工具无法安装在OSX上(据我所知),快速web搜索建议查看kqueue/kevent