Loading... 在 Linux 系统中,`curl` 和 `wget` 是两个非常常用的命令行工具,用于从网络下载文件或与服务器交互。它们各有特点,适合不同的场景。以下是它们的详细介绍和用法。 ### **1. `curl`** `curl` 是一个强大的命令行工具,用于从服务器传输数据或向服务器传输数据。它支持多种协议(如 HTTP、HTTPS、FTP、SFTP 等),并且可以处理复杂的请求(如 POST 请求、设置请求头等)。 #### **安装 `curl`** 大多数 Linux 发行版默认已安装 `curl`。如果没有安装,可以使用以下命令安装: ```bash # Ubuntu/Debian sudo apt-get install curl # CentOS/RHEL sudo yum install curl # Fedora sudo dnf install curl ``` #### **基本用法** - **下载文件**: ```bash curl -O http://example.com/file.zip ``` `-O` 表示将文件保存为远程文件的原始名称。 - **下载文件并指定本地文件名**: ```bash curl -o myfile.zip http://example.com/file.zip ``` `-o` 后面跟本地文件名。 - **断点续传**: ```bash curl -C - -O http://example.com/largefile.zip ``` `-C -` 表示从上次中断的位置继续下载。 - **下载多个文件**: ```bash curl -O http://example.com/file1.zip -O http://example.com/file2.zip ``` - **发送 HTTP POST 请求**: ```bash curl -d "param1=value1¶m2=value2" http://example.com/api ``` `-d` 用于发送 POST 数据。 - **设置请求头**: ```bash curl -H "Content-Type: application/json" http://example.com/api ``` - **下载到标准输出(stdout)**: ```bash curl http://example.com/file.txt > file.txt ``` ### **2. `wget`** `wget` 是一个专注于下载文件的工具,支持 HTTP、HTTPS 和 FTP 协议。它的特点是简单易用,并且支持断点续传和批量下载。 #### **安装 `wget`** 大多数 Linux 发行版默认已安装 `wget`。如果没有安装,可以使用以下命令安装: ```bash # Ubuntu/Debian sudo apt-get install wget # CentOS/RHEL sudo yum install wget # Fedora sudo dnf install wget ``` #### **基本用法** - **下载文件**: ```bash wget http://example.com/file.zip ``` - **断点续传**: ```bash wget -c http://example.com/largefile.zip ``` `-c` 表示断点续传。 - **下载多个文件**: ```bash wget http://example.com/file1.zip http://example.com/file2.zip ``` - **限制下载速度**: ```bash wget --limit-rate=50k http://example.com/file.zip ``` 将下载速度限制为 50 KB/s。 - **后台下载**: ```bash wget -b http://example.com/largefile.zip ``` `-b` 表示在后台下载。 - **下载整个网站**: ```bash wget --mirror --convert-links --adjust-extension --page-requisites http://example.com ``` 这会递归下载整个网站,并调整链接以便离线查看。 - **使用代理下载**: ```bash wget --proxy=on -e http_proxy=http://proxy.example.com:8080 http://example.com/file.zip ``` - **下载到指定目录**: ```bash 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` 更适合。 最后修改:2025 年 04 月 17 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏