2026.06.06 | youres | 26次围观
为什么要用@模板文件而不是命令行直接写
用curl -w 做重定向诊断时,很多人习惯直接在命令行里拼格式化字符串:
curl -sL -w "最终URL:%{url_effective} 跳转次数:%{num_redirects}\n" -o /dev/null https://example.com
这种方式有两个痛点:
- 特殊字符(引号、换行、百分号)需要反复转义,写错一个就全乱;
- 变量一多,命令行长得没法读,更没法复用。
-w @模板文件 的写法把格式化字符串放到独立文件里,彻底解决这两个问题。curl 会读取文件内容作为 -w 的格式串,支持多行、支持所有 %{variable} 变量。
模板文件基础用法
语法非常简单:
# 格式:@ + 文件路径
curl -sL -w @curl-format.txt -o /dev/null https://example.com
模板文件 curl-format.txt 里直接写格式串,不需要额外引号包裹:
最终URL: %{url_effective}
HTTP状态码: %{http_code}
跳转次数: %{num_redirects}
保存后在命令行直接引用,输出自动按文件内容格式化。
实战模板一:重定向全信息诊断
做重定向问题排查时,最常用的是同时看终点URL、跳转次数、各阶段耗时。新建文件 redirect-diag.txt:
=== 重定向诊断结果 ===
最终URL: %{url_effective}
HTTP状态码: %{http_code}
跳转次数: %{num_redirects}
首次连接耗时: %{time_connect}s
重定向耗时: %{time_redirect}s
总耗时: %{time_total}s
==================
使用方式:
curl -sL -w @redirect-diag.txt -o /dev/null https://www.youres.cn
输出示例:
=== 重定向诊断结果 ===
最终URL: https://youres.cn/
HTTP状态码: 200
跳转次数: 1
首次连接耗时: 0.028s
重定向耗时: 0.085s
总耗时: 0.312s
==================
一眼就能看出有没有多余跳转、重定向耗时是否异常。
实战模板二:JSON格式结构化输出
如果需要把curl的检测结果交给脚本处理,JSON格式是最方便的。新建 redirect-json.txt:
{
"final_url": "%{url_effective}",
"http_code": %{http_code},
"num_redirects": %{num_redirects},
"time_redirect": %{time_redirect},
"time_total": %{time_total}
}
配合 jq 解析:
curl -sL -w @redirect-json.txt -o /dev/null https://example.com | jq .
注意:url_effective 输出的是字符串,模板里已经加了引号;数字类型变量(http_code、num_redirects 等)不需要加引号,否则JSON解析会报错。
实战模板三:CSV格式批量巡检
批量检测多个网站时,CSV格式可以直接用Excel打开分析。新建 redirect-csv.txt:
%{url_effective},%{http_code},%{num_redirects},%{time_redirect},%{time_total}
写个简单脚本批量跑:
#!/bin/bash
echo "最终URL,HTTP状态码,跳转次数,重定向耗时,总耗时" > result.csv
while read url; do
curl -sL -w @redirect-csv.txt -o /dev/null "$url" >> result.csv
done < urllist.txt
如果想在表头里加说明文字(含中文),需要注意模板文件的编码必须是UTF-8无BOM,否则Excel打开会乱码。
模板文件使用注意事项
- 文件路径:
@后面跟绝对路径或相对于当前目录的相对路径,找不到文件时curl不会报错,只会输出空内容; - 换行符:Windows下建议用Unix格式(LF)保存模板文件,避免多余
\r出现在输出里; - 特殊字符:模板文件里不需要对
%做转义,curl会自动识别%{variable}格式的变量; - 变量不存在:如果写了不存在的变量名,curl会原样输出
%{错误变量名},不会报错,调试时注意检查变量名拼写。
相关文章推荐
- curl -w输出多个变量格式化技巧:5种写法让重定向诊断数据一目了然
- curl -w格式化输出重定向信息:5个实战技巧让你精准诊断跳转链路
- curl批量检测重定向输出CSV格式化方法:3个实战脚本让网站巡检结果一目了然
- curl测试重定向参数是否保留:5个实战命令让查询字符串丢失无处遁形
模板文件这个小技巧,让curl重定向诊断从"能用了"变成"好用了",值得写进你的常用工具箱。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论