我正在尝试使用fswatch从linux bash脚本中转换以下代码行,以便能够在Mac上运行它:
inotifywait -r -m 'myfolder/' | while read MODFILE
do
echo "something"
done由于inotifywait在Mac上不起作用,我想用第一行替换FSWatch。尽管自述文件引用了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但是,当我在tesfswatch/文件夹中更改或添加文件时,这些命令似乎都不起作用。
有人知道我哪里做错了吗?欢迎所有提示!
发布于 2014-07-04 20:45:51
与1.0及更高版本相比,fswatch 1.0之前的版本使用的调用语法略有不同。请确保您运行的是高于1.0的版本,如果您的版本低于1.0,则可能需要升级。
发布于 2014-08-27 17:53:45
正如Bushmills已经说过的那样,在v.unix 1.x中,fswatch语法在与fsw合并后发生了变化:这个决定背后的理由是允许使用>=用户觉得自然的语法监视多个路径。
此外,还添加了一个特定的选项(-0),以允许将fswatch输出轻松且不易出错地输送到另一个程序的输入:在使用-0时,fswatch将使用NUL (\0)字符分隔记录(与find和xargs等其他实用程序所做的类似)。
在您的示例中,您可能希望使用以下语法(根据您的需要对其进行微调):
$ fswatch -0 [opts] [paths] | xargs -0 -n 1 -I {} [command]这样:
fswatch -0将使用NUL拆分记录character.xargs -0将使用NUL字符拆分记录。这是正确匹配阻抗所必需的,fswatch.xargs -n 1将调用command每个命令。如果您想对每个解析记录都执行此操作,那么使用xargs -n x.xargs -I {}将用x参数替换command中出现的{}。如果您正在运行的命令不需要事件路径名,只需删除此选项即可。希望这能有所帮助。
https://stackoverflow.com/questions/24573584
复制相似问题