在命令行环境下下载文件是开发者、系统管理员和高级用户的必备技能,相比图形界面工具,命令行下载具有高效、自动化、可脚本化等优势,尤其适合服务器环境或批量处理场景,本文将详细介绍几种主流命令行下载工具的使用方法、核心参数及常见应用场景,帮助读者掌握不同场景下的下载技巧。
常用命令行下载工具及基础用法
命令行下载工具中,wget
、curl
和 aria2c
是最常用的三种,它们各有侧重,支持不同的协议和功能,可根据需求选择。
wget
:经典下载工具,支持递归与断点续传
wget
是 GNU 项目开发的工具,默认在大多数 Linux/macOS 系统中预装,支持 HTTP、HTTPS、FTP 协议,具备递归下载、断点续传、后台下载等核心功能。
基础语法:wget [选项] URL
常用参数及示例:
- 简单下载:直接下载文件到当前目录,文件名默认为 URL 中的最后一部分。
wget https://example.com/file.zip
- 指定保存目录:使用
-P
参数指定目标路径。wget -P /path/to/download https://example.com/file.zip
- 显示下载进度条:默认已显示,若需更详细信息(如速度、剩余时间),可加
-v
(verbose)参数。wget -v https://example.com/file.zip
- 断点续传:网络中断后使用
-c
参数续传,避免重新下载。wget -c https://example.com/large_file.iso
- 后台下载:使用
-b
参数将任务放入后台,适合下载大文件时退出终端仍继续。wget -b https://example.com/large_file.iso
- 递归下载整个网站:
-r
参数递归下载,-np
不下载父级目录,-k
将链接转为本地可访问。wget -r -np -k https://example.com/docs/
- 限速下载:
--limit-rate
参数限制下载速度(单位为 K、M)。wget --limit-rate=100k https://example.com/file.zip
curl
:多功能网络工具,支持协议广泛
curl
最初以 HTTP 客户端工具设计,支持 FTP、SMTP、SCP 等 20+ 种协议,功能远超下载本身(如上传、模拟请求、调试接口),是开发者的“瑞士军刀”。
基础语法:curl [选项] URL
常用参数及示例:
- 简单下载:默认将输出打印到终端,需用
-o
或-O
保存到文件。# 保存为指定文件名 curl -o local_file.zip https://example.com/file.zip # 保存为 URL 中的原文件名 curl -O https://example.com/file.zip
- 显示进度条:
--progress-bar
或 显示简洁进度条,-l
显示详细进度(含速度、剩余时间)。curl -# -O https://example.com/large_file.iso
- 断点续传:
-C -
自动检测断点并续传。curl -C - -O https://example.com/large_file.iso
- 跟随重定向:
-L
参数跟随 HTTP 301/302 重定向,确保下载最终文件。curl -L -O https://example.com/redirect_url/file.zip
- 下载带认证的资源:
-u
参数指定用户名和密码(适用于 Basic 认证)。curl -u username:password -O https://example.com/private/file.zip
- 通过代理下载:
--proxy
指定代理服务器。curl --proxy http://proxy.example.com:8080 -O https://example.com/file.zip
aria2c
:多线程下载工具,适合大文件与 BT 下载
aria2c
是轻量级多线程下载工具,支持 HTTP、HTTPS、FTP、BT、磁力链接,能显著提升下载速度(尤其适合大文件),同时支持断点续传和批量下载。
安装说明:
- Linux(Debian/Ubuntu):
sudo apt install aria2
- macOS(通过 Homebrew):
brew install aria2
基础语法:aria2c [选项] URL
常用参数及示例:
- 多线程下载:
-x
单个连接的最大线程数,-s
最大总线程数(默认 5,建议 16-32)。aria2c -x 16 -s 16 https://example.com/large_file.iso
- 断点续传:
--continue
默认开启,中断后重新执行命令即可续传。aria2c --continue https://example.com/large_file.iso
- 保存指定目录:
-d
参数指定路径。aria2c -d /path/to/download https://example.com/file.zip
- 下载 BT/磁力链接:直接传入磁力链接或 BT 文件。
# 下载磁力链接 aria2c "magnet:?xt=urn:btih:..." # 下载 BT 文件 aria2c --input-file example.torrent
- 限速与优先级:
--max-overall-download-limit
限制全局下载速度,-l
设置优先级(数字越大优先级越高)。aria2c --max-overall-download-limit=100K -l 1 https://example.com/file1.zip https://example.com/file2.zip
工具对比与选择
以下是三种工具的核心特点对比,便于根据场景快速选择:
功能 | wget |
curl |
aria2c |
---|---|---|---|
支持协议 | HTTP/HTTPS/FTP | 20+ 种(含 SMTP、SCP) | HTTP/HTTPS/FTP/BT/磁力 |
多线程下载 | 不支持 | 不支持 | 支持(默认 5 线程) |
断点续传 | 支持(-c ) |
支持(-C - ) |
默认支持 |
后台下载 | 支持(-b ) |
需结合 & 或 nohup |
支持(-d 后台) |
递归下载 | 支持(-r ) |
不支持 | 不支持 |
BT/磁力下载 | 不支持 | 不支持 | 支持 |
脚本友好性 | 高(简洁语法) | 高(灵活参数) | 中(需理解多线程逻辑) |
常见场景应用
批量下载多个文件
若需下载多个文件,可将 URL 存入文本文件(如 urls.txt
),每行一个 URL,再通过工具批量处理:
- wget:
wget -i urls.txt
- curl:
curl -K urls.txt
(需按 curl 配置文件格式编写) - aria2c:
aria2c -i urls.txt
(支持直接读取文本文件)
下载带特殊字符的文件名
若 URL 包含空格、中文等特殊字符,需用引号包裹 URL,或对特殊字符转义:
wget "https://example.com/文件名 with spaces.zip" curl -O "https://example.com/文件名 with spaces.zip"
通过代理批量下载
需代理访问时,可通过环境变量或参数指定代理(以 HTTP 代理为例):
# wget(环境变量) export http_proxy=http://proxy.example.com:8080 wget https://example.com/file.zip # curl(参数) curl --proxy http://proxy.example.com:8080 -O https://example.com/file.zip # aria2c(参数) aria2c --http-proxy=http://proxy.example.com:8080 https://example.com/file.zip
错误排查技巧
下载失败时,可通过以下步骤快速定位问题:
- 检查 URL 可访问性:用
curl -I URL
查看 HTTP 状态码(如 404 表示文件不存在,403 表示权限不足)。 - 验证网络连接:
ping
或traceroute
测试目标服务器是否可达。 - 检查权限:确保对目标目录有写入权限(Linux 下用
ls -ld /path/to/dir
检查)。 - 查看工具日志:
wget
使用-v
参数显示详细日志,curl
使用-v
或--trace
跟踪请求过程。
相关问答FAQs
Q1: 命令行下载时如何显示实时下载进度,避免“静默”下载?
A: 不同工具可通过不同参数显示进度:
wget
:默认已显示进度条,若未显示可加-v
参数(如wget -v URL
)。curl
:使用 显示简洁进度条(如curl -# -O URL
),或-l
显示详细进度(含速度、剩余时间)。aria2c
:默认显示进度条,可通过--summary-interval=NUM
调整进度更新频率(如aria2c --summary-interval=5 URL
每 5 秒更新一次)。
Q2: 如何批量下载一个网站上的所有图片(仅扩展名为 .jpg 和 .png)?
A: 可结合 wget
的递归下载和 -A
参数(指定文件扩展名)实现:
wget -r -np -A "jpg,png" https://example.com/images/
参数说明:
-r
:递归下载目录;-np
:不下载父级目录,避免无限递归;-A "jpg,png"
:仅下载扩展名为.jpg
和.png
的文件。
若需过滤特定路径(如排除/admin/
目录),可加-X "admin"
参数。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14356.html