问题标签 [fswatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 实时 git diff
我通常喜欢在查看 git diff 时输入我的 git commit 消息。
我非常喜欢这个小 perl add-on 到 git产生的输出,并产生看起来像这样的输出git diff
(这是一个截图,git log -p
但你明白了:
由于它如何突出显示已更改的行的相应部分,因此很容易看到发生了什么变化。只是想分享它,因为它看起来不像很多人使用它,而且对我来说,它比使用外部单独的差异工具或类似的东西要好,因为它可以在终端上运行!一般来说,它对 unix 管道更友好,而不是vimdiff
在vimdiff
紧要关头也很方便。
无论如何,show-and-tell 只是与这里的真正问题无关,也就是说,我可以设置一个终端窗口来显示 git diff,但是让它是动态的,这样当我保存一个文件它可以为我刷新git diff
吗?基本上,这个想法是让一个终端窗口实时显示我即将提交的确切更改,这样我就可以直接从我的文本编辑器切换到输入git commit
命令,同时阅读整个更改集,并且在 Linux 机器上也可以通过 SSH 实现这个工作流程。
那将是一个非常棒的工作流程,我认为一点 cmdline fu 可以让我到达那里,但我不确定从哪里开始。似乎 OS X 和 Linux 需要单独的实现。我发现fswatch可能对我有用,显然这类似于 Linux 上的 inotify-watch。我不应该只在我的 OS X 开发机器上设置它,但就像我之前提到的,通过 SSH 拥有这种功能将是史诗般的。
有没有其他快速而肮脏的 UNIXy 方法来解决这个问题?
linux - Linux 上的 inotifywait 是否允许在超时期间收集事件?
参看。OSX 上的FSEvents,默认情况下在触发事件之前收集超过 1 秒(超时可配置)的 FS 事件。
这样做的好处是将一系列文件系统更改收集到单个事件中(因此脚本不会运行超过它需要的时间),但会以延迟为代价。
例如,在 Vim 中保存一个文件会修改许多临时文件(它往往会删除一个缓冲区文件,更新一个撤消文件,并且还会创建然后删除一个名为 的测试文件4193
)以及文件本身。在 OSX 上,使用使用此 API 的小工具(例如我的fswatch 分叉) ,所有这些都可以折叠成一个“批处理事件”,而inotifywait -m
我指定的所有事件都在单独的行中通过流,这使得它变得不简单无需外部处理的组。
我很确定解决方案只是包装它并进行此处理,但我希望有一个隐藏的功能来指定像 FSEvents 允许的超时。
file - PLIST 似乎正确,但执行没有结果
我写了一个代理来监控关键系统文件:ag1-launchagents
我为其他 6 个目录创建了相同的文件,以分别监控它们的更改并通过 growlnotify 打印通知。使用命令行,脚本工作得非常好。
下一步是通过 *.plist 文件自动启动 ag1-ag7:
但它不起作用。
plist 似乎是正确的。我通过plutil检查了它。但是,每当我通过 launchctl load *.plist 运行 plist 并更改代理应观察的任何文件夹时,我都没有收到任何通知。
注意:我在 ProgramArguments 块中用一行进行了尝试,只启动了一个 *.sh 文件。但它也没有奏效。
对此有什么想法吗?
macos - 在 mac os x 上监视文件
那里有很多类似的帖子,但没有一个完全符合我的要求:我想要一个简单的脚本,它监视Mac 上的文件夹以进行更改,并在检测到更改时将修改后文件的文件名传递给命令/脚本.
该工具inotifywait
在 Mac 上不存在。文件夹事件 or fswatch
orwatchdog
似乎正在接近,但事实证明它们只监视文件夹或只返回文件夹名称。watchdog
可能正在做我需要的,但我只能找到这样的命令
再次只传递变量中的文件夹名称watch_src_path
。有谁知道如何让它(或其他程序)传递更改文件的文件名?
macos - 如何使用 FSWatch 在 Mac OSX 上观看文件更改?
我正在尝试使用fswatch从 linux bash 脚本中翻译以下行,以便能够在 Mac OSX 上运行它:
由于 inotifywait 在 Mac OSX 上不起作用,我想用第一行替换FSWatch。尽管 README 引用了 fswatch 手册页,但它没有提供指向它的链接,并且在 Internet 上进行搜索也没有得到任何信息。所以我试着弄乱了一点。
我创建了一个名为的文件夹testfswatch/
,并尝试在父文件夹中运行以下命令,然后在该文件夹中添加和更改文件testfswatch/
:
但是,当我在文件夹中更改或添加文件时,这些命令似乎都没有做任何事情tesfswatch/
。
有人知道我在这里做错了什么吗?欢迎所有提示!
macos - 如何运行 fswatch 来调用带有静态参数的程序?
我曾经像这样使用 fswatch v0.0.2(在这种情况下,当文件更改时运行 django 测试套件)
$>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 脚本中,我怎么能做到这一点?
shell - 在一行中使用 fswatch 触发 rsync
我正在尝试使用 fswatch 触发 rsync,但不知道如何在一行或至少在一个脚本中做到这一点。
我正在用两个文件夹test
和test_bak
我的Documents
文件夹对此进行测试。
date.log 仅用于调试,应替换为下面的 rsync 命令。
目前,每次更改文件时都会更新 file.log,但 date.log 仅在开始时更新。我基本上不需要它记录到file.log的中间部分。
fswatch 命令我想弄清楚
同步命令
将两个日志命令“排队”以便在检测到文件更改时更新两个文件的语法是什么?
regex - 带有 fswatch 的正则表达式 - 排除不以“.txt”结尾的文件
对于文件列表,我想匹配那些不以.txt
. 我目前正在使用这个表达式:
此表达式将匹配以 结尾的所有内容.txt
,但我希望它做相反的事情。
应该匹配:
不 应该匹配:
我想得到这个,所以我可以将它与fswatch配对使用:
问题是它似乎不起作用。
PS:我使用标签 bash 而不是 fswatch 因为我没有足够的声望点来创建它。对不起!
macos - 如何在 OS X 10.10 (Yosemite) 上以编程方式删除 Safari 8.0 中的 cookie
在 OS X 10.10.1 (Yosemite) 上的 Safari 8.0 (10600.1.25.1) 中,我访问了一些网站,如 google.com、apple.com、facebook.com,然后当我单击“Safari”->“首选项”时可以看到 cookie ...”->“隐私”->“详细信息...”
然后我完全退出了 Safari(实际上是退出,而不只是关闭窗口),并使用以下内容删除以下内容。
rm -r ~/Library/Caches/com.apple.Safari/
rm -r ~/Library/Cookies
rm -r ~/Library/Safari
当我重新启动 Safari 时,cookie 仍然存在,并且我仍然登录到登录后存储 cookie 的网站。
我需要删除哪些文件,或者我必须做什么才能让 Safari 真正删除 cookie?
我需要能够移动/重命名文件/目录,然后再将它们移回。Cocoa Cookies 可以删除 cookie ( http://ditchnet.org/cocoacookies/ ),当我使用fswatch时,没有有趣的文件发生变化。
node.js - Shell 脚本中的节点重启
每当文件发生更改时,我想重新运行节点服务器,但我想使用 fswatch。我正在使用 fswatch 和 shell 脚本,比如
但我不能再次运行相同的脚本,因为它会抛出 EADDRINUSE。
- 在 fswatch 的帮助下(或替代,无需任何新安装)通过脚本重新启动节点的最佳方法是什么?
- 为什么节点没有节点重启之类的东西?
我能想到的是从 ps 获取 pid 并用脚本杀死它,但我想应该有更好的解决方案。