在Linux中如何使用Curl命令
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