“写笔记”支持四种格式——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)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
jq
jq — 一款轻量级命令行JSON处理器,让你像操作对象一样优雅解析和转换JSON数据。
如果你是个经常跟JSON打交道的开发者,不管是写API、调接口、分析日志,还是折腾配置文件,你大概率都经历过这种场景:盯着满屏密密麻麻的JSON,手动复制粘贴、肉眼扫描、脑内解析,然后长叹一声“这玩意儿能不能自动处理一下?”
有这种需求,jq 就是你等的那把瑞士军刀。它不是那种“装完就吃灰”的工具,而是那种“一旦用过就回不去”的命令行神器。简单说,它让你能用一行命令完成对JSON的查询、过滤、重组、格式化,甚至批量转换。没有它之前,我处理JSON全靠写Python脚本或者在线解析器;有了它之后,我直接在终端里飞起。
它能干什么,解决什么问题?
jq 最核心的用途就是:把JSON当成一个可编程的数据结构,用类似jq表达式的语法,快速提取你想要的字段、筛选符合条件的对象、重组输出结构。比如:
- 从API返回的JSON里提取某个字段的值
- 过滤出所有status为“error”的条目
- 把多层嵌套的JSON拍平成一维表格
- 把数组转换成key-value对象
- 批量修改JSON里的某个值
- 快速格式化混乱的JSON(比
python -m json.tool更强大)
尤其适合在Shell脚本、CI/CD流水线、日志分析场景中,让你不用打开编辑器或写完整程序就能搞定JSON处理。它轻量、跨平台、单文件,装完就能用。
下载方式
官方下载点在这里:jq 官网
GitHub 仓库(含预编译二进制):jq GitHub Releases
官网页面非常简洁,直接提供了各个平台的二进制下载链接,以及源码编译方式。我个人建议直接下载预编译的二进制文件,省心省力。
安装方法
macOS
用 Homebrew 最方便:
brew install jq
Linux
Ubuntu/Debian
sudo apt-get install jq
CentOS/RHEL/Fedora
sudo yum install jq # CentOS 7及以下
sudo dnf install jq # Fedora / CentOS 8+
Arch Linux
sudo pacman -S jq
通用方式(下载二进制)
如果系统包管理器里的版本太老,或者你不想用包管理器,直接下载二进制:
# 以 Linux amd64 为例
wget https://github.com/jqlang/jq/releases/latest/download/jq-linux-amd64
chmod +x jq-linux-amd64
sudo mv jq-linux-amd64 /usr/local/bin/jq
Windows
- 用 Chocolatey:
choco install jq - 用 Scoop:
scoop install jq - 或者直接下载 exe 文件扔到 PATH 目录里,从 GitHub Releases 里找
jq-windows-amd64.exe改名为jq.exe。
基础使用教程
下面我直接上例子,假设你有一个 data.json 文件,内容如下:
{
"users": [
{ "name": "Alice", "age": 30, "role": "admin" },
{ "name": "Bob", "age": 25, "role": "user" },
{ "name": "Charlie", "age": 35, "role": "user" }
],
"total": 3,
"source": "internal"
}
1. 格式化输出
没格式化过的JSON看着头疼,直接:
jq . data.json
输出带颜色高亮和缩进的JSON,比 cat data.json | python -m json.tool 更清爽。
2. 提取字段
提取 total 字段:
jq .total data.json
# 输出:3
提取 users 数组第一个元素:
jq '.users[0]' data.json
提取所有用户的名字:
jq '.users[].name' data.json
# 输出:
# "Alice"
# "Bob"
# "Charlie"
3. 按条件筛选
找出所有 role 为 "user" 的用户:
jq '.users[] | select(.role == "user")' data.json
只取他们的名字和年龄:
jq '.users[] | select(.role == "user") | {name, age}' data.json
4. 输出数组
如果你想把筛选结果包成一个数组(而不是一行一个对象),用 [ ] 括起来:
jq '[.users[] | select(.role == "user") | {name, age}]' data.json
5. 与管道配合
jq 最爽的地方是能直接处理管道传来的JSON。比如用 curl 请求一个API,然后直接处理:
curl -s https://api.github.com/repos/jqlang/jq/releases/latest | jq '.tag_name'
6. 修改JSON
给每个用户加一个 active 字段:
jq '.users[] += {"active": true}' data.json
注意:默认不修改原文件,输出到标准输出。如果要保存,重定向到新文件即可。
进阶技巧
1. 使用 --arg 传变量
你想把筛选条件通过变量传进来,而不是硬编码:
ROLE="admin"
jq --arg role "$ROLE" '.users[] | select(.role == $role)' data.json
这样在脚本里动态传参非常方便。
2. 用 -r 输出原始字符串
默认 jq 输出带引号的字符串,比如 "Alice"。如果你只要纯文本(比如写入文件或传给其他命令),用 -r 参数:
jq -r '.users[].name' data.json
# 输出:
# Alice
# Bob
# Charlie
3. 构造新的JSON结构
把 users 数组转成一个以 name 为key的对象:
jq '.users | map({(.name): {age, role}}) | add' data.json
输出:
{
"Alice": { "age": 30, "role": "admin" },
"Bob": { "age": 25, "role": "user" },
"Charlie": { "age": 35, "role": "user" }
}
4. 合并多个JSON文件
比如你有两个JSON文件,想合并:
jq -s '.[0] * .[1]' file1.json file2.json
-s 表示把所有输入读成一个数组,然后 * 是递归合并对象。
5. 用 --slurp 处理多行JSON
如果你的文件里每行是一个独立的JSON对象(比如日志),可以这样一次处理:
jq -s '.[] | select(.status == 200)' multi_line.json
6. 自定义函数
jq 支持定义函数,避免重复写长表达式。比如:
jq 'def active: select(.active == true); .users[] | active' data.json
虽然平时用得不多,但复杂场景下很管用。
7. 与 xargs 或 while read 组合
从JSON里提取ID,然后批量处理:
jq -r '.users[].name' data.json | while read name; do
echo "Processing $name"
# 你的业务逻辑
done
最后说两句
jq 的学习曲线其实很低,你只要记住几个核心概念:. 表示当前节点,[] 遍历数组,| 管道传递,{} 构造新对象,select 做过滤。背熟这五个,日常80%的需求都能搞定。
它的文档也很良心,官网有详细的 Manual,还有交互式在线教程 jq play,你可以边试边学。
如果你还没装,强烈建议现在就去装一个。等你哪天在终端里优雅地敲出一行jq命令,把同事折腾了半天的JSON解析任务秒掉时,你会回来感谢我的。