这是一篇简短的文章。我是最近才发现 entr 的,我很惊奇从来没有人告诉过我?!因此,如果你和我一样,那么我告诉你它是什么。

entr 的网站上对它已经有很好的解释,也有很多示例。

总结在其头部: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 true

do

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

done

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

就这样了

我希望这可以帮助一些人了解 entr!

本文由 LCTT 原创编译,Linux中国 荣誉推出

服务器启动时创建文件夹,技术|entr:文件更改时重新运行构建相关推荐

  1. SharePoint 2013创建应用程序时IIS端口文件夹下没文件

    最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...

  2. 云服务器htdocs文件夹在,htdocs文件夹

    htdocs文件夹 内容精选 换一换 OBS Browser支持按前缀搜索文件或文件夹.搜索结果为根目录级别下的前缀为搜索内容的文件和文件夹.如果要在某个文件夹中进行搜索,您可以使用以下两种方式,搜索 ...

  3. dreamweaver 服务器文件夹 本地站点文件夹,使用站点定义向导定义本地文件夹

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 您将使用"站点定义"对话框创建站点定义并定义本地文件夹.您可以以两种视图中的任意一种来填写此对话框:"基本"或&q ...

  4. 查看服务器的文件夹,远程查看服务器文件夹内的文件夹

    远程查看服务器文件夹内的文件夹 内容精选 换一换 本章节介绍如何将下载的证书安装到Apache服务器上.安装好证书后,您的Web服务器将能支持SSL通信,从而保证您Web服务器的通信安全.如果证书安装 ...

  5. dreamweaver 服务器文件夹 本地站点文件夹,Dreamweaver CC

    Dreamweaver CC教程:了解本地和远程文件夹的结构 了解本地和远程文件夹的结构 当您要使用 Dreamweaver 连接到远程文件夹时,将在"站点设置"对话框的" ...

  6. Android 创建文件,删除文件,加载本地txt文件,string转txt文件,创建文件夹,读取文件夹,open failed: ENOENT

    1.创建文件 String fileName = "my.txt"; File fs = new File(Environment.getExternalStorageDirect ...

  7. 查看服务器文件夹,远程查看服务器文件夹内的文件夹

    远程查看服务器文件夹内的文件夹 内容精选 换一换 请使用Mind Studio的安装用户进行升级操作,在升级前请先登录到后台服务器,切换到root用户在/usr/bin目录下执行./add_sudo. ...

  8. webuploader上传文件夹技术

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传: 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输 ...

  9. 安装 anaconda 后无法运行,开始菜单没有启动项,安装文件夹缺失大量文件

    安装 anaconda 后无法运行,开始菜单没有启动项,安装文件夹缺失大量文件 在安装的时候有可能报错提示无法创建菜单,或者安装完后文件夹缺失大量文件,网上的方法有改PATH,关闭360,关闭电脑管家 ...

最新文章

  1. TextVew中文空格
  2. sap模块介绍_SAP系统操作指南.doc
  3. gin 生成api文档_gin-swagger 生成RESTful风格OpenAPI文档
  4. java与python数据结构对比
  5. FUSE—用户空间文件系统
  6. Bitmap,Drawable转换
  7. JSP 高校后勤报修管理系统myeclipse开发mysql数据库bs框架java编程serlvet(MVC)结构详细设计
  8. FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay
  9. 51单片机led灯依次点亮
  10. 【C语言】创建各类三角形图案
  11. Vue项目中如何解决error: failed to push some refs to ‘xxx(远程库)‘ git push失败的解决方案
  12. Java多线程案例之线程池
  13. 他俩很般配应该这么说
  14. css - 层叠 - 个人学习笔记
  15. 川奇吕电商概括短视频账号策划运营方案怎么写
  16. 物联网系统RT-Thread学习---软件包使用(按键)
  17. java有哪些网校,【有哪些必备的Java的基础知识?想学好这个语言就要了解这些】- 环球网校...
  18. 关于POVIT的简单介绍
  19. 机器人轴配置数据详解
  20. HTML5废弃的标签和属性

热门文章

  1. 雷泰RAYR3I2MSCL3+高温红外测温仪的参数指标
  2. 测试员,面对自己30岁后的下坡路,我们该何去何从?
  3. Having dreams is what makes life tolerable.
  4. 区块链知识点杂记(并不全面)
  5. mac下配置Charles,安装证书
  6. vue 如何获取图片的原图尺寸_js获取图片信息(一)-----获取图片的原始尺寸
  7. 你的梦想是什么?灿星文化眼含热泪只想IPO
  8. 如何查看电脑是否已经虚拟化
  9. 前端小白写了个网页版五子棋游戏,使用原生 JS + Canvas 实现绘制棋子、棋盘
  10. ipfs add命令