kra*_*r65 8 macos monitor sh inotifywait fswatch
我正在尝试使用fswatch从linux bash脚本翻译以下行,以便能够在Mac OSX上运行它:
inotifywait -r -m 'myfolder/' | while read MODFILE
do
echo "something"
done
Run Code Online (Sandbox Code Playgroud)
由于inotifywait在Mac OSX上不起作用,我想用第一行代替FSWatch.尽管README引用了fswatch手册页,但它没有提供链接,并且在互联网上搜索并没有给我任何东西.所以我试着搞砸了一下.
我创建了一个名为的文件夹testfswatch/,我尝试在父文件夹中运行以下命令,然后在文件夹中添加和更改文件testfswatch/:
fswatch -o testfswatch/ | echo "LALA"
fswatch -o testfswatch/ | someSimpleProgram
fswatch -o testfswatch/ | xargs -n1 -I{} echo "LALA"
fswatch -o testfswatch/ | xargs -n1 -I{} ./someExecutable
fswatch -o testfswatch/ | xargs -n1 echo "LALA"
fswatch -o testfswatch/ | xargs -n1 someExecutable
// And more variations of the above
Run Code Online (Sandbox Code Playgroud)
当我在tesfswatch/文件夹中更改或添加文件时,这些命令似乎都没有做任何事情.
有谁知道我在这里做错了什么?欢迎所有提示!
Enr*_*omo 14
正如Bushmills已经说过的那样,fswatch在合并之后语法在v.> = 1.x中发生了变化fsw:这个决定背后的基本原理是允许使用对UNIX用户来说很自然的语法来监视多个路径.
此外,添加了一个特定的选项(-0),以允许容易且不容易出错的fswatch输出管道输出到另一个程序的输入:使用时-0,fswatch将使用NUL(\0)字符分隔记录(沿着其他实用程序的行,如find和xargs做) .
在您的情况下,您可能希望使用以下语法(根据您的需要进行微调):
$ fswatch -0 [opts] [paths] | xargs -0 -n 1 -I {} [command]
Run Code Online (Sandbox Code Playgroud)
这条路:
fswatch -0将使用该NUL字符拆分记录.xargs -0将使用该NUL字符拆分记录.这需要正确匹配阻抗fswatch.xargs -n 1将调用command每个命令.如果你想每个x记录都这样做,那就用吧xargs -n x.xargs -I {}将用解析的参数替换{}in的出现command.如果您正在运行的命令不需要事件路径名,请删除此选项.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
10854 次 |
| 最近记录: |