这是一篇简短的文章。我最近才发现entr,我很惊讶从来没有人告诉过我这件事?!所以如果你和我一样,那么我会告诉你它是什么。它在entr的网站上有很好的解释,有很多例子。总结一下:entr是一个命令行工具,每次更改一组指定文件中的任何一个时,它都能够运行任意命令。您将要在标准输入上监视的文件列表传递给它,如下所示:gitls-files|输入bashmy-build-script.sh或查找.-名称*.rs|输入货物测试或任何你想要的。快速反馈很棒就像世界上的每个程序员一样,我发现每次更改代码时都必须手动重新运行构建/测试很烦人。hugo、flask等很多工具都有内置的系统,可以在文件更改时自动重建,这太棒了!但通常我自己编写一些自定义构建过程(例如bashbuild.sh)并且entr给我一种神奇的构建体验,我只使用一行bash并获得关于我的更改是否修复了那个奇怪错误的即时反馈。长命!重新启动服务器(entr-r)但是如果您正在运行服务器并且每次都需要重新启动服务器怎么办?如果你传递-r,那么entr会帮助你gitls-files|entr-rpythonmy-server.pyclearthescreen(entr-c)另一个巧妙的标志是-c,它可以让你在Clearthescreenbefore之后重新运行命令,以免被之前构建的输出分散注意力。使用gitls-files通常,我要跟踪的文件集与我在git中的文件列表大致相同,因此将gitls-files传递给entr是很自然的事情。我现在有一个项目,有时我只是创建还没有在git中的文件。那么如果你想包含未跟踪的文件怎么办?这些git命令行参数可以做到这一点(我是从一位读者的电子邮件中得到的,谢谢!):gitls-files-cdmo--exclude-standard|entryour-build-script有人给我发邮件,说他们做了一个git-entr命令可以执行:gitls-files-cdmo--exclude-standard|entr-d"$@"我认为这是一个非常酷的想法。每次添加新文件时重新启动:entr-dgitls-files另一个问题是有时我添加一个新文件,当然它还不在git中。entr为此提供了一个很好的功能。如果您传递-d,那么如果您在entr跟踪的任何目录中添加新文件,它将退出。我将它与while循环一起使用,重新启动entr以包含新文件,如下所示:whiletruedo{gitls-files;gitls文件。--exclude-standard--others;}|entr-dyour-build-scriotdoneentr如何在Linux上工作:inotify在Linux中,entr使用inotify(一种用于跟踪文件系统事件(如文件更改)的系统)工作。如果你用strace跟踪它,那么你会看到每个监视文件的inotify_add_watch系统调用,如下所示:inotify_add_watch(3,"static/stylesheets/screen.css",IN_ATTRIB|IN_CLOSE_WRITE|IN_CREATE|IN_DELETE_SELF|IN_MOVE_SELF)=1152就是这样我希望这可以帮助一些人理解entr!
