服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

2023-12-28 17:13未知服务器之家 Linux

Linux curl 命令有哪些常见用法? curl是最流行的web请求工具,3大主流操作系统带有curl,一些手机移动端系统也提供了curl,通过命令行下载文件和发起网页请求,简单好用YYDS! curl 是一种从服务器传输数据或向服务器传输数据的工具,

Linux curl 命令有哪些常见用法?

curl是最流行的web请求工具,3大主流操作系统带有curl,一些手机移动端系统也提供了curl,通过命令行下载文件和发起网页请求,简单好用YYDS!

curl 是一种从服务器传输数据或向服务器传输数据的工具,使用的协议包括 协议(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、 imaps、ldap、ldaps、pop3、pop3s、rtmp、rtsp、scp、sftp、smtp、smtps、 TELNET 和 TFTP)。该命令无需用户干预。

curl 提供了大量有用的功能,如支持代理、用户授权、访问FTP和TFTP上传下载、HTTP请求、SSL 连接、携带Cookie、文件传输断点续传、Metalink请求等。正如你在下文中看到的,curl支持的功能可谓大而全。

curl还提供了libcurl,以库的形式封装了所有与传输相关的功能。

Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

curl 的用法规则

curl 命令允许您在 Linux 中通过命令行下载和上传数据。其语法如下:

curl [options] [URL...]

可通过curl --help 命令,就像大部分其他命令的--help那样,可以自助查询该命令的常见参数:

 -d, --data <data> HTTP POST 数据
 -f, --fail HTTP错误时安静地失败(完全不打印错误)
 -h, --help <category> 获取命令帮助
 -i, --include 在输出中包含协议响应标头
 -o, --output <file> 输出写入到文件而不是 stdout
 -O, --remote-name 将输出写入名为远程文件的文件中
 -s, --安静模式
 -T,--upload-file <file> 将本地文件传输到目的地
 -u, --user <user:password> 服务器用户和密码
 -A、--user-agent <name> 发送 User-Agent <name> 到服务器
 -v,--verbose 使操的作反馈更加详尽显示
 -V, --version 显示版本号

--help值显示部分参数。curl还支持很多高级功能,Linux下可通过:

man curl

命令查看完整的帮助文档对curl所有参数的解释(例如跟随重定向的-L参数,只在man curl 的完整帮助信息中有显示 )。

通过下面的例子,你可以更直观地了解curl的常见功能是如何工作的。

问题1:curl 命令如何工作?

curl的基本用法相当简单 —— 只需将 URL 作为输入传递给 curl 命令,然后将输出重定向到文件即可。

例如,将下载的文件数据保存为本地的ubuntu2204-64.torrent文件:

curl http://www.zzvips.com/uploads/allimg/ba02rgiwcxp.torrent > ubuntu2204-64.torrent

请注意,您也可以在此处使用 -o 选项(作为对比,linux的另一个著名下载工具wget的参数是-O,大O,而curl的是小o)。

-o, --output <file>
Write output to <file> instead of stdout.

回到我们的示例,当数据下载到系统上的ubuntu2204-64.torrent文件中时,在命令行上生成了以下输出:

Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

在操作过程中,curl 通常会显示进度表,显示传输的数据量、传输速度和预计剩余时间等。

默认情况下,curl 会将这些数据显示到终端。但如果你调用curl进行文件下载或显示下载内容到终端, 就会不显示进度表,以免把进度表和响应数据混在一起,扰乱输出。

如果你想在 HTTP POST 或 PUT 请求中使用进度表,你需要 使用 shell 重定向 (>)、-o [文件]或其他类似方法,就可以将输出和显示分离。例如:

$ curl http://www.zzvips.com/uploads/allimg/4wtclpevo15.com > linuxlibs.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  16981      0 --:--:-- --:--:-- --:--:-- 17083

FTP 上传的情况则不同,因为该操作不会向终端显示任何响应数据。

问题2:如何使用 curl 下载多个文件?

只需按以下方式传递 URL:

curl -O [URL1] -O [URL2] -O [URL3] ...

下载时显示的进度条会包含多个文件的下载进度:

Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

问题3:如何解决请求地址转移/重定向问题?

当你用curl 请求一些网站的 URL 时,可能会收到“已转移”(301 Moved)或“永久重定向(301 Moved Permanently)”等提示。这通常发生在访问的 URL 被重定向到其他 URL 时。例如,您打开一个网站(如 curl -I http://www.zzvips.com/uploads/allimg/d040q54qi0a),它会显示重定向到你所在国家/地区的 URL(如 https://cn.bing.com)。

$ curl -I  http://www.zzvips.com/uploads/allimg/d040q54qi0a

HTTP/2 301
content-length: 0
location: http://www.zzvips.com/uploads/allimg/2z1bayzf3nf
accept-ch: Sec-CH-UA-Arch, …… Sec-CH-UA-Platform-Version
x-msedge-ref: Ref A: ……
date: …… Dec 2023 ……

如果希望 curl 跟随重定向,请改用 -L 命令行选项。

问题4:curl在下载文件中断后,如何继续从中断点恢复下载(断点续传)?

有时,下载会在两者之间中断。为了节省时间和数据,你希望再次尝试时,能从中断的点开始。Curl 允许你使用 -C 命令行选项来执行此操作。例如:

curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso

图显示了 curl 命令在中断后恢复下载。

Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具

问题5:curl如何模拟浏览器发起下载请求,将请求结果保存到linuxlibs.index.html文件:

curl --user-agent "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.61"  -o linuxlibs.index.html http://www.zzvips.com/uploads/allimg/4wtclpevo15.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 36960    0 36960    0     0  13719      0 --:--:--  0:00:02 --:--:-- 13719

延伸 · 阅读

精彩推荐
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01