在Linux中如何使用Curl命令

时间:2020-07-27 12:58:56  来源:igfitidea点击:

CURL是一个功能强大的实用程序,可以用于将数据下载到服务器。
Linux中的Curl命令支持多种协议,包括HTTP/HTTPS,FTP,SMTP,SMB等。

本教程主要集中在HTTP和FTP协议上。
首先,我们将看到如何使用CURL命令通过HTTP协议检索数据,然后我们将使用CURL与FTP协议下载和上载文件。

  • 使用curl命令检索网页。
  • 将数据保存到输出文件。
  • 显示HTML响应头。
  • 设置curl用户代理。
  • 下载文件(zip /图片)。
  • 使用FTP协议。
  • 从FTP服务器下载文件。
  • 将文件上传到FTP服务器。
  • curl命令提示和技巧。

使用curl命令检索网页

让我们刚刚运行一个简单的curl命令。
以下示例将检索example.com网页和打印到Linux终端HTML输出。

curl http://example.com

example.com的数据将显示给Linux终端。
输出包括HTML标记,它不是我们在Web浏览器上看到的结果。

将数据保存到文件中。
Linux中的Curl命令默认将数据显示到终端。
要将数据保存到文件中,我们需要使用-o标志(小写0)或者-o标志(大写O)。

在以下示例中,我们使用-o选项(小写0)。
使用-o选项,我们指定输出文件名。

curl -o example.html http://example.com

此时间输出不会被发送到Linux终端。
curl将检索example.com并将其保存到example.html文件中。

使用-o(大写O)标志,我们没有指定输出文件名。
它将自动创建具有与远程文件相同名称的输出文件。
但是,-O选项需要特定的远程文件名(例如,index.html或者index.php)。

curl -O http://example.com/index.html

此时间CURL命令将从example.com下载“index.html”文件并将其另存为“index.html”。

另请注意,我们可以在URL之前或者之后放置命令选项,没有区别。

也可以使用输出重定向将数据保存到文件中,如下所示。

curl http://example.com > example.html

显示HTTP响应标题

Linux中的Curl命令可以显示Web服务器发送的HTTP响应标头。
要显示响应标题,请使用-i选项。

curl -I http://example.com

这将转储HTTP标题,如下 Screen截图所示。

在curl命令中设置用户代理

有时Web服务器和防火墙会阻止默认curl用户代理。
一个可能的解决方案是使用--User-Agent标志设置不同的用户代理。

在以下示例中,Curl将使用Fedora-Firefox用户代理从检索数据。

curl --user-agent 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0' http://example.com/

示例,使用curl命令下载文件

以下示例将从WordPress.org下载“最新zip”文件,并保留原始文件名:

curl -O https://wordpress.org/latest.zip

在以下示例中,Linx中的Curl命令将从WordPress.org下载“最新zip”文件。
将其另存为“wordpress.zip”:

curl -o wordpress.zip https://wordpress.org/latest.zip

使用输出重定向下载图像并保存:

curl http://example.com/image1.jpg > /home/user/image1.jpg

询问HTTP服务器提供数据的压缩版本。

curl --compressed http://example.com/

使用curl命令连接到ftp服务器

现在让我们看看如何使用带有FTP协议的Linux Curl命令。
对于我将使用以下FTP凭据使用的示例。

  • FTP服务器:192.168.1.10
  • FTP用户名:FTPUSER
  • FTP密码:FTP123

要指定用户名和密码,我们使用-u选项。

curl -u username:password

从FTP服务器下载文件。

以下命令将从FTP服务器下载“file1.txt”。
我们将使用-o选项(大写O),因此将保留原始文件名。

curl -u ftpuser:ftp123 ftp://192.168.1.10/file1.txt -O

在以下示例中,我们将从FTP服务器下载“File1.txt”并使用-o标志(小写O)将其另存为“file2.txt”。

curl -u ftpuser:ftp123 ftp://192.168.1.10/file1.txt -o 'file1.txt'

将文件上传到FTP服务器

要上传文件,Linux中的curl命令使用-t选项,后跟文件的名称想要上传。

curl -u ftpuser:ftp123 -T file1.txt ftp://192.168.1.10

上传有不同的文件名。
以下命令将使用“file1.txt”并将其上载到FTP服务器作为“file2.txt”。

curl -u ftpuser:ftp123 -T file1.txt ftp://192.168.1.10/file2.txt

上传多个文件。
要上传多个文件,请将文件名放在curl括号内。

curl -u curlftp:ftp123 -T '{file1.txt,file2.txt}' ftp://192.168.1.10/

linux curl命令提示和技巧

显示命令帮助:

curl --help

在详细模式下运行curl命令。
使用-v/- verbose选项运行命令以获取更多信息:

curl -v http://example.com

静音模式。
这与verbose模式相反,命令不会显示任何错误消息或者下载进度。

curl -s http://example.com -o output

启用错误消息的静音模式:

curl -s --show-error http://example.com

显示进度列与#ags:

curl -# http://example.com -o output_file

最大文件大小。
--max-filesize标志用于指定要下载的文件的最大大小(以字节为单位)。
如果文件大于MAX大小,Linux中的Curl命令将不会下载该文件。

curl --max-filesize 1000 -O https://wordpress.org/latest.zip

最大数据传输速率。
--limit-rate选项设置最大下载或者上传率。
默认情况下,速度以字节/秒为单位测量,除非添加后缀(对于千字节,对于兆字节,G对于gigabytes而言)。

以下示例将使用每秒64千字节的最大速度。

curl --limit-rate 64k http://example.com

字节范围。
--range标志使用指定要传输的字节范围。
例如,在Curl命令之后将从index.html文件下载前100个字节。

curl --range 0-99 http://example.com/index.html