当前位置: 首页 > Linux

Linux常用命令08-curl

时间:2023-04-06 12:02:32 Linux

curl是一个命令行实用程序,用于从服务器传输数据或将数据传输到服务器,旨在无需用户交互即可工作。使用curl,您可以使用支持的协议(包括HTTP、HTTPS、SCP、SFTP和FTP)下载或上传数据。curl提供了许多选项,允许您恢复传输、限制带宽、代理支持、用户身份验证等。下面介绍常用的用法,通过实例和最常用的curl选项的详细说明,向您展示如何使用curl工具。安装curl大多数Linux发行版现在都预装了curl包。要检查系统上是否安装了curl包,请打开控制台,键入curl,然后按Enter。如果安装了curl,系统将打印curl:尝试“curl--help”或“curl--manual”以获取更多信息。否则,您会看到类似找不到curl命令的信息。如果未安装curl,您可以使用发行版的包管理器轻松安装它。在Ubuntu和Debian上安装curlsudoaptupdatesudoaptinstallcurl在CentOS和Fedora上安装curlsudoyuminstallcurl如何使用curlcurl命令的语法如下:curl[options][URL...]最简单的表单,当不使用任何选项调用时,curl将指定的资源显示到标准输出。例如,要检索示例网站的主页,您可以运行:curlchasays.github.io它将在您的终端窗口中打印example.com主页的源代码。如果未指定协议,curl将尝试猜测您要使用的协议,它将默认为HTTP。将输出保存到文件要保存curl命令的结果,请使用-o或-O选项。小写-o使用预定义的文件名保存文件,在下面的示例中为vue-v2.6.10。js:curl-ovue-v2.6.10.jshttps://cdn.jsdelivr.net/npm/vue/dist/vue.js大写-O保存文件及其原文件名:curl-Ohttps://cdn.jsdelivr.net/npm/vue/dist/vue.js下载多个文件要一次下载多个文件,请使用多个-O选项,后跟要下载的文件的URL。在下面的示例中,我们正在下载ArchLinux和Debianiso文件:curl-Ohttp://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso\-Ohttps://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso恢复下载您可以使用-C选项恢复下载。如果您的连接在下载大文件期间掉线并且您可以继续上一个文件而不是从头开始下载,这将非常有用。例如,如果您正在下载Ubuntu18.04iso文件,请使用以下命令:curl-Ohttps://updates.cdn-apple.com/2020/macos/061-44388-20200128-3badc52c-6391-412c-86d9-fc2aaf9514e0/macOSUpd10.15.3.dmg那么你的连接突然断开了,你可以通过以下命令继续下载:curl-C--Ohttps://updates.cdn-apple.com/2020/macos/061-44388-20200128-3badc52c-6391-412c-86d9-fc2aaf9514e0/macOSUpd10.15.3.dmg获取URL的HTTP头。Httpheader是一个以冒号分隔的键值对,包括用户代理、内容类型和编码等信息。标头随请求或响应在客户端和服务器之间传递。使用-I选项只获取指定资源的HTTP标头:curl-I--http2https://www.apple.com/测试站点是否支持http/2以检查特定URL是否支持新的HTTP/2协议,使用-i和--http2选项获取HTTP标头:curl-I--http2-shttps://apple.com/|grepHTTPS选项告诉curl静默运行并隐藏进度表和错误信息。如果远程服务器支持http/2,curl打印http/2.0200:HTTP/2200否则,回复是http/1.1200:HTTP/1.1200OK如果你使用的是curl7.47.0或更高版本,你不需要使用--http2选项,因为所有HTTPS连接都默认启用了http/2。遵循重定向默认情况下,curl不遵循HTTPLocation标头。如果您尝试检索google.com的非www版本,您会注意到您没有获取页面的来源,而是被重定向到www版本:curlbaidu.com选项指示curl遵循任何重定向,直到它到达最终目的地:``curl-Lbaidu.com``更改用户代理有时在下载文件时,远程服务器可能会设置为阻止curl用户代理,或者根据访问者的设备和浏览器返回不同的内容。在这种情况下,要模拟不同的浏览器,请使用-a选项。例如模拟Firefox60,可以使用:curl-A"Mozilla/5.0(X11;Linuxx86_64;rv:60.0)Gecko/20100101Firefox/60.0"https://baidu.org/指定最大传输速率--limit-rate选项允许您限制数据传输速率。该值可以用字节表示,k后缀表示千字节,m后缀表示兆字节,g后缀表示千字节。在以下示例中,curl将下载Go二进制文件并将下载速率限制为1mb:curl--limit-rate1m-Ohttps://dl.google.com/go/go1.10.3.linux-amd64。tar.gz此选项有助于防止curl占用所有可用带宽。通过FTP传输文件要使用curl访问受保护的FTP服务器,请使用-u选项并指定用户名和密码,如下所示:curl-uFTP_USERNAME:FTP_PASSWORDftp://ftp.baidu.com/登录后,命令列出用户主目录中的所有文件和目录。您可以使用以下语法从FTP服务器下载文件:curl-uFTP_USERNAME:FTP_PASSWORDftp://ftp.example.com/file.tar.gz要将文件上传到FTP服务器,请使用-t后跟要上传的文件名称:curl-Tnewfile.tar.gz-uFTP_USERNAME:FTP_PASSWORDftp://ftp.example.com/使用cookie有时您可能需要使用特定的cookie来发出HTTP请求以访问远程资源或调试问题.默认情况下,当使用curl请求资源时,不会发送或存储任何cookie。要将cookie发送到服务器,请使用-b开关,后跟包含cookie或字符串的文件名。比如下载oraclejavajdkrpm文件JDK-10.0.2linux-x64bin。Rpm您需要传递一个名为oraclelicense的cookie,其值为a:curl-L-b"oraclelicense=a"-Ohttp://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm##使用代理支持不同类型的代理,包括HTTP、HTTPS和SOCKS。要通过代理服务器传输数据,请使用-x(--proxy)选项,后跟代理URL。以下命令使用代理在192.168.44.18888端口下载指定资源:curl-x192.168.44.1:8888http://google.com/如果代理服务器需要认证,使用-u(--proxy-user)选项,后跟用户名和密码,用冒号分隔(用户:密码):curl-Uusername:password-x192.168.44.1:8888http://google.com/总结curl是一个命令行工具,允许你到远程主机或传输数据到远程主机。它对于故障排除、下载文件等非常有用。我只是做了一些简单的示例,但演示了最常见的curl选项,这些示例旨在帮助您了解curl命令的工作原理。本文由多发平台ArtiPub自动发布