在 Linux 系统中,curl 和 wget 是两个非常常用的命令行工具,用于从网络下载文件或与服务器交互。它们各有特点,适合不同的场景。以下是它们的详细介绍和用法。
1. curl
curl 是一个强大的命令行工具,用于从服务器传输数据或向服务器传输数据。它支持多种协议(如 HTTP、HTTPS、FTP、SFTP 等),并且可以处理复杂的请求(如 POST 请求、设置请求头等)。
安装 curl
大多数 Linux 发行版默认已安装 curl。如果没有安装,可以使用以下命令安装:
# Ubuntu/Debian
sudo apt-get install curl
# CentOS/RHEL
sudo yum install curl
# Fedora
sudo dnf install curl基本用法
下载文件:
curl -O http://example.com/file.zip-O表示将文件保存为远程文件的原始名称。下载文件并指定本地文件名:
curl -o myfile.zip http://example.com/file.zip-o后面跟本地文件名。断点续传:
curl -C - -O http://example.com/largefile.zip-C -表示从上次中断的位置继续下载。下载多个文件:
curl -O http://example.com/file1.zip -O http://example.com/file2.zip发送 HTTP POST 请求:
curl -d "param1=value1¶m2=value2" http://example.com/api-d用于发送 POST 数据。设置请求头:
curl -H "Content-Type: application/json" http://example.com/api下载到标准输出(stdout):
curl http://example.com/file.txt > file.txt
2. wget
wget 是一个专注于下载文件的工具,支持 HTTP、HTTPS 和 FTP 协议。它的特点是简单易用,并且支持断点续传和批量下载。
安装 wget
大多数 Linux 发行版默认已安装 wget。如果没有安装,可以使用以下命令安装:
# Ubuntu/Debian
sudo apt-get install wget
# CentOS/RHEL
sudo yum install wget
# Fedora
sudo dnf install wget基本用法
下载文件:
wget http://example.com/file.zip断点续传:
wget -c http://example.com/largefile.zip-c表示断点续传。下载多个文件:
wget http://example.com/file1.zip http://example.com/file2.zip限制下载速度:
wget --limit-rate=50k http://example.com/file.zip将下载速度限制为 50 KB/s。
后台下载:
wget -b http://example.com/largefile.zip-b表示在后台下载。下载整个网站:
wget --mirror --convert-links --adjust-extension --page-requisites http://example.com这会递归下载整个网站,并调整链接以便离线查看。
使用代理下载:
wget --proxy=on -e http_proxy=http://proxy.example.com:8080 http://example.com/file.zip下载到指定目录:
wget -P /path/to/directory http://example.com/file.zip
3. curl 和 wget 的对比
| 特性 | curl | wget |
|---|---|---|
| 协议支持 | 支持更多协议(如 HTTP、HTTPS、FTP、SFTP、SCP 等) | 主要支持 HTTP、HTTPS 和 FTP |
| 功能 | 更灵活,支持复杂的 HTTP 请求(如 POST、PUT 等) | 更专注于文件下载,适合批量下载和断点续传 |
| 断点续传 | 支持(需使用 -C -) | 支持(默认启用) |
| 后台下载 | 不直接支持,但可以通过重定向到后台运行 | 支持(-b 参数) |
| 递归下载 | 不支持 | 支持(--mirror 参数) |
| 代理支持 | 支持多种代理类型 | 支持 HTTP 和 FTP 代理 |
| 输出控制 | 更灵活,可以将输出重定向到文件或标准输出 | 主要用于下载文件 |
4. 总结
- 如果你需要 下载文件 或 递归下载整个网站,
wget是更好的选择。 - 如果你需要 发送 HTTP 请求 或 处理复杂的网络交互,
curl更适合。