curl - 最常用、最强大的全能选手
curl 是一个利用 URL 语法在命令行下工作的文件传输工具,它支持几乎所有常见的协议(HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP, TELNET, DICT, FILE, IMAP, POP3, SMTP 等),是开发者和系统管理员的首选。

基本语法
curl [选项] [URL]
常用选项和示例
最简单的 GET 请求 直接在 URL 后面跟上参数即可。
# 请求 example.com 首页 curl https://www.example.com # 发送带查询参数的 GET 请求 curl "https://www.example.com/search?q=linux&lang=en"
指定请求方法
使用 -X 或 --request 选项。
# 发送 POST 请求 curl -X POST https://www.example.com/api/users # 发送 PUT 请求 curl -X PUT https://www.example.com/api/users/123
发送请求体
使用 -d 或 --data 选项,curl 会自动将请求方法设置为 POST。
# 发送 JSON 数据
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"John", "email":"john@example.com"}' \
https://www.example.com/api/users
# 发送表单数据 (application/x-www-form-urlencoded)
curl -X POST \
-d "username=admin&password=secret" \
https://www.example.com/login
添加请求头
使用 -H 或 --header 选项。

curl -H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
https://www.example.com/api/protected-resource
保存响应到文件
使用 -o 或 --output 选项。
# 将响应保存到 response.html curl -o response.html https://www.example.com # 显示下载进度并保存到文件 curl -O https://www.example.com/images/logo.png # -O 会自动用URL的文件名保存
显示详细的请求/响应信息
使用 -v 或 --verbose 选项,这对于调试非常有用。
curl -v https://www.example.com
这会显示请求头、响应头和响应体的原始内容。
只显示响应头
使用 -I 或 --head 选项,相当于发送一个 HEAD 请求。

curl -I https://www.example.com
忽略 SSL 证书验证(不安全,仅用于测试)
如果服务器使用自签名证书,可以使用 -k 或 --insecure。
curl -k https://self-signed.badssl.com
wget - 专注于下载的简洁工具
wget 的名字来源于 "web get",它的主要设计目标是用于在后台下载文件,虽然它也能发起请求并显示内容,但其核心优势在于强大的下载功能。
基本语法
wget [选项] [URL]
常用选项和示例
最简单的 GET 请求并显示内容
wget -qO - https://www.example.com # -q: 安静模式,不显示进度信息 # -O -: 将输出重定向到标准输出(即终端)
下载文件并保存
# 下载并保存为 index.html wget https://www.example.com # 下载并指定文件名 wget -O my_page.html https://www.example.com
发送 POST 请求
使用 --post-data 选项。
wget --post-data="username=admin&password=secret" https://www.example.com/login
添加请求头
使用 --header 选项。
wget --header="Authorization: Bearer YOUR_TOKEN_HERE" https://www.example.com/api/protected-resource
httpie - 人性化的 HTTP 客户端
httpie 是一个现代的、易于使用的命令行 HTTP 客户端,它的语法比 curl 更直观,更接近自然语言,非常适合快速测试 API。
安装
# 基于 Debian/Ubuntu sudo apt install httpie # 基于 CentOS/RHEL/Fedora sudo yum install httpie # 或者使用 dnf sudo dnf install httpie
基本语法
http [选项] [METHOD] URL [ITEM [ITEM]]
常用选项和示例
最简单的 GET 请求
http https://www.example.com
发送 POST 请求和 JSON 数据
httpie 会自动将 Content-Type 设置为 application/json。
http POST https://www.example.com/api/users name="John" email="john@example.com"
添加请求头
使用 Header:Value 的格式。
http GET https://www.example.com/api/protected-resource Authorization:"Bearer YOUR_TOKEN_HERE"
上传文件 使用 符号。
http POST https://www.example.com/upload file@/path/to/your/local/file.txt
查看详细响应
默认情况下,httpie 会以彩色和高亮的形式显示请求、响应头和响应体,非常清晰。
elinks / lynx - 终端下的网页浏览器
这两个工具是纯粹的文本模式浏览器,它们会将网页的 HTML 渲染成纯文本显示在终端里,虽然它们也可以用来发起 HTTP 请求,但主要用途是浏览网页。
安装
# elinks sudo apt install elinks # Debian/Ubuntu sudo yum install elinks # CentOS/RHEL # lynx sudo apt install lynx # Debian/Ubuntu sudo yum install lynx # CentOS/RHEL
使用示例
# 使用 elinks elinks https://www.google.com # 使用 lynx lynx https://www.google.com
在浏览器内,可以使用方向键导航,按 q 退出。
总结与对比
| 工具 | 主要特点 | 适用场景 |
|---|---|---|
curl |
功能极其强大,支持协议多,选项丰富,稳定可靠。 | 首选工具,适用于几乎所有场景,从简单请求到复杂的脚本交互、自动化测试。 |
wget |
专注于下载,语法简单,支持断点续传、递归下载。 | 主要用于下载单个或多个文件、网站镜像。 |
httpie |
语法人性化,输出清晰(彩色高亮),专为 API 测试设计。 | 快速测试 RESTful API,交互式调试,对新手友好。 |
elinks/lynx |
终端网页浏览器,将 HTML 渲染为文本。 | 在没有图形界面的服务器上快速浏览网页内容,检查链接是否有效。 |
如何选择?
- 日常使用和脚本自动化:首选
curl,它是事实上的标准,几乎所有的 Linux 系统都预装了它。 - 快速测试 API:使用
httpie,它的语法更直观,能让你更专注于数据本身。 - 下载文件:使用
wget,它的下载功能比curl更专注和强大。 - 在终端里看网页:使用
elinks或lynx。
对于绝大多数 Linux 熟练掌握 curl 就足以应对所有的 HTTP 请求需求了。
