命令行下载的艺术:curl与wget实战指南
【免费下载链接】Bash-OnelinerA collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance.项目地址: https://gitcode.com/GitHub_Trending/ba/Bash-Oneliner
在Linux系统中,命令行下载工具是每个开发者必备的技能。你是否曾遇到下载大文件时网络中断、需要批量获取资源却无从下手、或者想要优化下载速度?本文将带你深入探索curl和wget这两个强大的下载工具,通过实际场景展示如何高效解决下载难题。
快速入门:基础下载操作
单文件下载
最基本的下载需求就是从网络获取单个文件。curl和wget提供了简洁的解决方案:
# curl下载并指定文件名 curl -o download_file.html http://example.com # wget自动使用原文件名下载 wget http://example.com🚀使用技巧:curl需要显式指定输出文件名,而wget默认使用URL中的文件名。
文件保存位置控制
当需要将文件保存到特定目录时:
# curl保存到指定路径 curl -o /downloads/website.html http://example.com # wget使用-P参数指定目录 wget -P /downloads http://example.com # wget下载并重命名文件 wget -O custom_name.html http://example.com实战场景:常见问题解决方案
网络不稳定的断点续传
下载大文件时网络中断是最令人头疼的问题。curl和wget都提供了断点续传功能:
# curl断点续传 curl -C - -o large_file.iso http://mirror.example.com/large_file.iso # wget断点续传 wget -c http://mirror.example.com/large_file.iso⚠️注意事项:断点续传需要服务器支持,某些服务器可能不支持此功能。
带宽控制与限速下载
在共享网络环境中,限制下载速度是必要的:
# curl限速下载(100KB/s) curl --limit-rate 100K -o video.mp4 http://example.com/video.mp4 # wget限速下载 wget --limit-rate=100k http://example.com/video.mp4处理重定向问题
很多网站会使用重定向,这时需要确保工具能够正确跟随:
# curl强制跟随重定向 curl -L http://example.com/redirect # wget默认会跟随重定向,如需禁用: wget --max-redirect=0 http://example.com进阶技巧:批量与自动化下载
批量URL下载
当需要下载多个文件时,可以创建URL列表文件:
# 创建URL列表文件 echo "http://example.com/file1.zip" > urls.txt echo "http://example.com/file2.zip" >> urls.txt # curl批量下载 xargs -n 1 curl -O < urls.txt # wget批量下载 wget -i urls.txt智能递归下载
wget在递归下载方面表现出色,特别适合批量获取网站资源:
wget -r -l1 -H -t1 -nd -N -np -A pdf -e robots=off http://docs.example.com该命令参数解析:
-r:启用递归下载-l1:限制递归深度为1级-H:允许跨主机访问-t1:重试次数1次-nd:不创建目录结构-N:只下载更新的文件-np:不追溯至父目录-A pdf:只下载PDF文件-e robots=off:忽略robots.txt限制
文件上传与共享
curl不仅支持下载,还支持文件上传功能:
# 上传文件到transfer.sh服务 curl --upload-file ./document.pdf https://transfer.sh/document.pdf # 下载已上传的文件 curl https://transfer.sh/abc123/document.pdf -o document.pdf网络调试与性能优化
HTTP状态监控
调试网络请求时,状态码和响应时间很重要:
# 获取HTTP状态码 curl -s -o /dev/null -w "%{http_code}" https://www.example.com # 测量请求总时间 curl -v -o /dev/null -s -w 'Total: %{time_total}s\n' example.com自定义请求头
模拟特定客户端或浏览器时:
# 设置User-Agent curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://example.com # 设置Referer curl -e "http://example.com" http://api.example.com/data实用小贴士
后台下载管理
长时间下载任务适合放到后台:
# wget后台下载 wget -b http://example.com/large_file.zip # 查看下载进度 tail -f wget-log快速IP地址查询
需要知道当前公网IP时:
curl http://checkip.amazonaws.com文档阅读优化
通过命令行阅读项目文档:
# 转换为man手册格式 curl https://gitcode.com/GitHub_Trending/ba/Bash-Oneliner/raw/master/README.md | pandoc -f markdown -t man | man -l - # 通过文本浏览器阅读 curl https://gitcode.com/GitHub_Trending/ba/Bash-Oneliner/raw/master/README.md | pandoc | w3m -T text/html总结
curl和wget作为Linux系统中的核心下载工具,各自拥有独特的优势和应用场景。curl更适合处理复杂的HTTP请求和数据传输,而wget在批量下载和网站镜像方面表现更佳。
掌握这些技巧后,你将能够:
- 高效处理各种下载场景
- 优化网络资源使用
- 自动化批量下载任务
- 快速调试网络问题
通过不断实践和探索,你会发现命令行下载工具的强大之处,让文件获取变得更加简单高效。
【免费下载链接】Bash-OnelinerA collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance.项目地址: https://gitcode.com/GitHub_Trending/ba/Bash-Oneliner
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考