Guy*_*den 13 macos bash watch fswatch
我曾经像这样使用fswatch v0.0.2(在这个例子中,当文件改变时运行django test suit)
$>fswatch . 'python manage.py test'
这很好用.
我想排除一些导致测试每次保存运行多次的文件(Sublime文本正在保存.tmp文件,我怀疑.pyc文件也导致这种情况)
所以我升级了fswatch以启用-e模式.
然而fswatch改变的方式导致了我的麻烦 - 它现在接受一个像这样的管道参数:
$>fswatch . | xargs -n1 program
我无法弄清楚如何将参数传递给程序.例如,这不起作用:
$>fswatch . | xargs -n1 python manage.py test
这也不是:
$>fswatch . | xargs -n1 'python manage.py test'
如果不在bash脚本中打包我的命令,我怎么能这样做?
Enr*_*omo 16
fswatch
文档(Texinfo手册或wiki或者README
)都有如何完成此操作的示例:
$ fswatch [opts] -0 path ... | xargs -0 -n1 -I{} your full command goes here
Run Code Online (Sandbox Code Playgroud)
陷阱:
-0
:使用它来确保正确解释具有换行符的路径.-o
:使用它将fswatch
集合中的所有事件"冒泡"到一个只打印集合中的记录数量.-I{}
:指定一个占位符是你错过了的伎俩xargs
在这些情况下,您正确地解释你的命令参数也不想记录(在这种情况下,由于-o
使用,该组中的记录数)传递下来的命令是执行.Guy*_*den 16
替代答案不是打击xargs的默认原因 - 将输出作为要运行的命令的参数传递.
fswatch . | (while read; do python manage.py test; done)
这仍然有点罗嗦/合成,所以我创建了一个超级简单的bash脚本fswatch-do
,为我简化了一些事情:
#!/bin/bash
(while read; do $@; done)
Run Code Online (Sandbox Code Playgroud)
用法:
fswatch -r -o -e 'pyc' somepath | fswatch-do python manage.py test someapp.SomeAppTestCase
归档时间: |
|
查看次数: |
7216 次 |
最近记录: |