笔记
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
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, 跨平台