linux中如何使用entr命令

68次阅读
没有评论

共计 1567 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家分享的是有关 linux 中如何使用 entr 命令的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

entr  是一个命令行工具,当每次更改一组指定文件中的任何一个时,都能运行一个任意命令。你在标准输入给它传递要监控的文件列表,如下所示:

git ls-files | entr bash my-build-script.sh

或者

find . -name *.rs | entr cargo test

或者任何你希望的。

快速反馈很棒

就像世界上的每个程序员一样,我发现每次更改代码时都必须手动重新运行构建 / 测试非常烦人。

许多工具(例如 hugo 和 flask)都有一个内置的系统,可以在更改文件时自动重建,这很棒!

但是通常我会自己编写一些自定义的构建过程(例如  bash build.sh),而  entr  让我有了一种神奇的构建经验,我只用一行 bash 就能得到即时反馈,知道我的改变是否修复了那个奇怪的 bug。万岁!

重启服务器(entr -r)

但是如果你正在运行服务器,并且每次都需要重新启动服务器怎么办?如果你传递  -r,那么  entr  会帮你的

git ls-files | entr -r python my-server.py

清除屏幕(entr -c)

另一个简洁的标志是  -c,它让你可以在重新运行命令之前清除屏幕,以免被前面构建的输出分散注意力。

与 git ls-files 一起使用

通常,我要跟踪的文件集和我在 git 中的文件列表大致相同,因此将  git ls-files  传递给  entr  是很自然的事情。

我现在有一个项目,有时候我刚创建的文件还没有在 git 里。那么如果你想包含未被跟踪的文件怎么办呢?这些  git  命令行参数就可以做到(我是从一个读者的邮件中得到的,谢谢你!):

git ls-files -cdmo --exclude-standard | entr your-build-script

有人给我发了邮件,说他们做了一个  git-entr  命令,可以执行:

git ls-files -cdmo --exclude-standard | entr -d  $@

我觉得这真是一个很棒的主意。

每次添加新文件时重启:entr -d

git ls-files  的另一个问题是有时候我添加一个新文件,当然它还没有在 git 中。entr  为此提供了一个很好的功能。如果你传递  -d,那么如果你在  entr  跟踪的任何目录中添加新文件,它就会退出。

我将它与一个  while  循环配合使用,它将重启  entr  来包括新文件,如下所示:

while truedo{ git ls-files; git ls-files . --exclude-standard --others; } | entr -d your-build-scriotdone

entr 在 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

感谢各位的阅读!关于“linux 中如何使用 entr 命令”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-07发表,共计1567字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)