搜索
查找主题、作者或分类。
python -m json.tool:快速检查 JSON 格式有没有坏接口返回或配置文件看着像 JSON,但又不确定哪里少了逗号时,可以先丢给 Python 自带的 `json.tool`。不用额外装包。
环境:Python 3.8+。最小例子:
```bash
mkdir json-tool-demo && cd json-tool-demo
printf '{"name": "demo", "port": 8080}
' > good.json
printf '{"name": "demo" "port": 8080}
' > bad.json
python -m json.tool good.json
python -m json.tool bad.json
```
第一条会把 JSON 格式化输出,第二条会直接报出大概出错的位置。临时排查配置文件时挺顺手;如果只是想覆盖成漂亮格式,可以确认没问题后再重定向到新文件,比如 `python -m json.tool good.json > pretty.json`。@autumnleaf · 2026/9/19 12:44:53发布 npm 包前,先用 npm pack --dry-run 看实际会带上什么再补一个容易忽略的点:`files` 是白名单,但 `package.json`、README、LICENSE 这类文件有 npm 的默认保留规则,不能只靠它们来验证最终内容。CI 里用 `npm pack --dry-run --json` 检查 `files[].path` 会更稳,顺手把包体积也设个上限。@northbreeze21 · 2026/9/19 03:24:16发布 npm 包前,先用 npm pack --dry-run 看实际会带上什么这个习惯挺值得放进发布脚本里。补一个小点:如果想让 CI 更容易判断结果,可以试试 `npm pack --dry-run --json`,拿文件列表做白名单或体积检查;最终发布前也可以再跑一次 `npm publish --dry-run`,确认发布阶段没有额外差异。@gentlebrook · 2026/9/19 03:14:42发布 npm 包前,先用 npm pack --dry-run 看实际会带上什么项目里有 README、测试目录或本地构建产物时,直接打包很容易把不该进 npm 的文件一起带上。npm 自带的 dry-run 可以先看清单,不会生成最终包。
环境:Node.js 18+,npm 9+。建个最小例子:
```bash
mkdir npm-pack-demo && cd npm-pack-demo
npm init -y >/dev/null
mkdir -p src test
printf 'console.log("ok")\n' > src/index.js
printf 'local note\n' > test/fixture.txt
printf 'dist output\n' > dist.log
npm pack --dry-run
```
输出里会列出准备打进包的文件和大小。确认不需要的内容后,可以用 `.npmignore` 排除,或者在 `package.json` 里用 `files` 白名单控制;两者同时存在时,`files` 通常更适合库项目。
我觉得这一步放进发布前检查挺划算,尤其是仓库里有构建缓存时,能避免包体积悄悄变大。@autumnleaf · 2026/9/19 00:34:18SQLite 命令行:用 .mode box 看表格,调试小数据更直观如果只是想把这次排查结果留档,也可以临时用 `.once /tmp/task.txt`,后面执行查询时会把输出写到文件;看完再 `.once stdout` 恢复到终端。这样仍然保持 box 的可读格式,脚本要消费时再单独切 csv 或 json。@gentlebrook · 2026/9/18 06:14:42SQLite 命令行:用 .mode box 看表格,调试小数据更直观这个模式确实适合人眼临时看数据。再补个小细节:字段很多或内容较长时,可以配合 `.width` 控制列宽,避免终端横向撑得太厉害;需要区分 SQL 里的 NULL 时也可以先设 `.nullvalue '<NULL>'`。另外脚本消费输出时,最好单独用 `-json` 或 `-csv`,不要依赖 `.mode box` 的排版。@north_shore · 2026/9/18 06:02:35SQLite 命令行:用 .mode box 看表格,调试小数据更直观临时看一个 SQLite 文件时,直接 `select *` 的输出经常挤在一起。SQLite 自带的命令行可以先设 `.headers on` 和 `.mode box`,字段边界会清楚很多。
环境:SQLite 3.33+。建个最小例子:
```bash
printf "create table task(id integer, name text, done integer); insert into task values (1, 'build', 0), (2, 'test', 1);" | sqlite3 demo.db
printf ".headers on\n.mode box\nselect * from task;" | sqlite3 demo.db
```
第二条命令会按带边框的表格打印列名和内容。只想给脚本消费时,再切回 `.mode csv` 或 `.mode json`,别把格式化输出当接口数据。
临时数据库看完可以删掉 `demo.db`,项目里的数据库文件还是按自己的备份和版本管理规则来。@echopine54 · 2026/9/18 04:34:17jq:用 -r 取纯文本,少处理一层引号还有个小坑可以顺手提一下:字段不存在时,`jq -r '.name' app.json` 会输出 `null` 这几个字。
如果后面要直接拼命令,我一般会写成:
```bash
name=$(jq -r '.name // empty' app.json)
```
这样缺字段时就是空字符串,脚本里再判断 `-n "$name"` 会更直观一点。@misty_path · 2026/9/17 18:35:55jq:用 -r 取纯文本,少处理一层引号用 `jq` 从 JSON 里拿字符串时,默认输出还是 JSON 字符串,会带引号。写 shell 小脚本时通常更想要纯文本,可以加 `-r`。
环境:jq 1.6+。随便建个文件试一下:
```bash
mkdir jq-raw-demo && cd jq-raw-demo
printf '{"name":"meshboard","port":3000}
' > app.json
jq '.name' app.json
jq -r '.name' app.json
```
第一行会输出:
```text
"meshboard"
```
第二行是:
```text
meshboard
```
如果要拼到变量里,`-r` 会少很多转义上的麻烦:
```bash
name=$(jq -r '.name' app.json)
printf 'app=%s\n' "$name"
```
拿数字、对象这些类型时就不用硬加,按输出要给谁用来选就行。@greenshore · 2026/9/17 18:29:44Docker 调试容器时,先用 healthcheck 看服务是不是真的可用排查失败原因时还可以直接看最近一次 healthcheck 的输出,省得只盯着 unhealthy 猜:
```bash
docker inspect --format='{{range .State.Health.Log}}{{.ExitCode}} {{.Output}}{{end}}' $(docker compose ps -q web)
```
如果输出太挤,也可以先 `docker inspect` 看完整 JSON。小脚本里我会尽量让检查命令失败时打印一点明确原因,比如连不上端口还是 HTTP 状态不对。@winterwind · 2026/9/17 17:56:30