墨穗app.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v1.0.165 · 墨穗笔记
笔记

Notebase墨穗
静水流深,落墨成穗。

0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →

笔记

0
加载中...

工具

0

此页用于记录用户反馈问题后的每一次改进

关于

笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势

// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

entr

terminal

entr — 文件一变,命令就跑,告别手动重启和重复劳动。


兄弟们,今天聊个能让你少掉点头发的命令行小工具——entr。

先说说痛点。你写代码的时候,是不是经常这样:改完一个文件,切到终端,Ctrl+C,上下键找回上次的命令,回车,等编译/测试/重启服务……一天重复几十次。要是碰上改CSS、改配置文件这种高频操作,手都能抽筋。更烦的是,有时候忘了重启,拿旧状态调试半天,最后发现是缓存没刷新,心态直接炸裂。

entr就是干这个的。它的核心逻辑就一句话:监控一组文件,一旦有变化,就执行你指定的命令。听起来简单,但用好了,能把你从“手动触发”的泥潭里拽出来,进入“改完即生效”的自动化状态。

它是谁?解决什么问题?

entr是一个Unix命令行工具,全称大概是“event notifier with a twist”(我瞎猜的,但意思对)。它不依赖某个特定语言或框架,纯粹站在文件系统事件之上。你告诉它“盯着这些文件”,再告诉它“变了就干这个”,剩下的交给它。

它能解决的问题:

  • 开发时自动重启服务(Node、Python、Go、Ruby……啥都行)
  • 自动跑测试(保存代码立刻看到红绿)
  • 自动构建前端资源(改完SCSS自动编译成CSS)
  • 自动同步文件(比如改完配置自动rsync到服务器)
  • 任何你不想手动重复的命令

相比nodemon、watchman这些,entr的优势在于:极简、无依赖、跨平台(Linux、macOS、BSD都能跑,Windows用WSL)。它不挑语言,不绑框架,就是一个纯粹的“触发器”。

怎么装?

官网地址在这里:https://eradman.com/entrproject/

安装方式很随意,看你的系统:

macOS(用Homebrew):

brew install entr

Debian/Ubuntu:

sudo apt install entr

Arch Linux:

sudo pacman -S entr

FreeBSD:

pkg install entr

要是你系统太老没包,直接去官网下源码编译,也就十几秒的事。

基础使用:先跑起来

用法核心就两个参数:-d(监控目录变化)和管道输入文件列表。最经典的姿势:

ls *.py | entr python main.py

意思是:把当前目录所有.py文件喂给entr,一旦其中任何一个文件有改动,就杀掉正在运行的python main.py,重新启动。

注意:entr默认是先执行一次命令,然后再开始监控。所以第一次运行就会启动你的程序,后面每次改文件都会重启。

更实用的重启服务器例子(Node.js):

ls server.js routes/*.js | entr -r node server.js

-r参数表示--restart,它会先发送SIGTERM给当前进程,再重新执行命令。比直接pkill干净。

自动跑测试:

ls src/*.js test/*.js | entr npm test

保存一下,测试立刻跑起来,红绿反馈极快。

监控目录变化(新增/删除文件):

如果你新增了一个文件,ls *.py这种固定列表是抓不到的。这时候用-d:

find . -name '*.py' | entr -d python main.py

-d让entr监控文件所在目录,如果有新文件匹配(或文件被删),也会触发。注意:配合find用更稳。

进阶技巧:玩出花来

1. 用-c清屏,让输出干净点

每次重启服务,终端里全是旧日志,烦不烦?加个-c:

ls *.go | entr -c go run main.go

每次触发前自动清屏,输出清爽多了。

2. 结合-p(持久化)处理大量文件

如果你监控的文件特别多(比如几千个),entr默认会重新扫描文件列表。加-p可以保留之前的文件列表,避免重复扫描,性能提升明显:

find . -name '*.js' | entr -p npm run build

3. 用/作为文件参数,监控整个目录(递归)

不想用find?entr支持直接传目录,配合-d:

entr -d sh -c 'make && ./run_tests' <<< './src/'

这里用heredoc把目录路径传进去。但注意,这种方式会监控该目录下所有文件(包括二进制、隐藏文件),触发可能太频繁。建议还是find筛选扩展名。

4. 排除特定文件(比如日志)

用!前缀排除。比如监控所有*.py但忽略__pycache__下的:

find . -name '*.py' ! -path './__pycache__/*' | entr -r python main.py

5. 用-s执行shell命令,而不是单个程序

有时候你想跑一串命令,比如“改完SCSS,先编译,再刷新浏览器”。用-s:

ls src/*.scss | entr -s 'make css && livereload'

-s会把后面内容当字符串交给sh -c执行,灵活度拉满。

6. 组合拳:自动部署到服务器

ls dist/ | entr -s 'rsync -avz dist/ user@server:/var/www/ && ssh user@server "systemctl reload nginx"'

改完本地构建,自动同步,自动重载服务。一套带走。

7. 配合make或npm run,实现“保存即构建”

ls src/ | entr -r make dev

改完代码,不用手动按,自己就编译重启了。

几个小坑提醒

  • 别监控正在写入的文件(比如数据库文件、日志文件),否则可能触发无限循环。用find排除掉。
  • entr默认不处理子进程的退出,如果命令返回非零状态码,它可能还是会继续监控。但如果你用-r,它会等子进程退出再重启。如果子进程卡住,entr也会卡住。这时候可以配合timeout命令。
  • 文件列表用ls还是find? 如果文件数量少且稳定,ls够用。如果有嵌套目录或动态新增,用find + -d。
  • macOS上-d可能有点慢,因为文件事件机制不同。如果遇到延迟,试试不用-d,用find定期扫描(但entr本身是事件驱动的,不扫描)。

最后说点真心话

entr不是那种能让你发朋友圈炫耀的酷炫工具,但它就像一把趁手的螺丝刀——平时不起眼,一旦你用顺手了,就再也回不去了。它把“改代码”和“看结果”之间的那点摩擦降到了最低,让你更专注在写代码本身,而不是机械地切换窗口按回车。

我现在的习惯是:每个项目启动时,先写一个dev.sh脚本,里面就是一行ls ... | entr -r ...。以后每天开工,跑一下脚本,剩下的时间只需要专心改文件,终端自己会干活。

如果你还在手动重启服务、手动跑测试,强烈建议花两分钟装上entr,体验一把“改完即所见”的丝滑。真的,试一次你就回不去了。


标签: 文件变更触发, CLI, 跨平台

相似推荐
MetasploitPastaHashcatWezTermDenotig
编写使用方法
Markdown 格式 · Ctrl+Enter 确定
0 字新建笔记
欢迎回来
登录你的墨穗笔记账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属墨穗笔记
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

隐私提醒

取消
编辑工具
受控分享
为这篇笔记生成限时 / 带密码的临时链接
关闭