`ENTR` - 一款当文件变更时让你执行任意命令的工具
entr
的功能六个词说清楚:Run arbitrary commands when files change。示例:
ag -l | entr make
它的基本使用场景是“修改-测试”这样的循环。它的基本假定是文件查找那部分交托给更好的程序,例如 ag, ack, grep, ls 等。它的设计哲学是接口最小化,尽可能简洁。甚至于对于新增文件的用户都需要自己写下 while true; do ls *.py | entr command
。
简单也意味着强大,它可以跟很多工具配合起来使用,例如 pkill, tmux, reload-browser 等等。另外,简单的接口不意味着它面对的场景简单,事实上,它的正确实现要考虑很多细节,例如 NFS 文件系统上 inotify 通知不一样,版本控制系统会有一连串的写操作,防止子进程还没跑完新的变更就触发了新的子进程,等等。