Linux curl初学者命令教程(5个示例)

虽然Web浏览器是用户从Internet下载内容的主要媒介,但也有一些Linux命令也可以让你做...

Linux curl初学者命令教程(5个示例)

虽然Web浏览器是用户从Internet下载内容的主要媒介,但也有一些Linux命令可以让您这样做。 这些工具在没有GUI的无头系统上派上用场。

在本教程中,我们将讨论一个这样的命令 - Curl - 除其他外,它允许您从Web下载内容。 请注意,本文中讨论的示例在Ubuntu 16.04 LTS上进行了测试。

Linux curl命令

curl命令允许您通过Linux中的命令行下载和上载数据。 以下是它的语法:

curl [options] [URL...]

以下是该手册页中有关此命令的说明:

 curl is a tool to transfer data from or to a server, using one of the
supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET and TFTP). The command is designed to work without user inter?
action.

curl offers a busload of useful tricks like proxy support, user authen?
tication, FTP upload, HTTP post, SSL connections, cookies, file trans?
fer resume, Metalink, and more. As you will see below, the number of
features will make your head spin!

curl is powered by libcurl for all transfer-related features. See
libcurl(3) for details.

以下是一些Q&A风格的示例,可以让您更好地了解Curl的工作原理。

Q1。 curl命令如何工作?

基本用法非常简单 - 只需将URL作为输入传递给curl命令,然后将输出重定向到文件。

例如:

curl http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent > test.torrent

请注意,您也可以在此处使用-o选项。

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

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

curl命令如何工作

以下是手册页中有关此输出中显示的进度表的说明:

 curl normally displays a progress meter during operations, indicating
the amount of transferred data, transfer speeds and estimated time
left, etc.

curl displays this data to the terminal by default, so if you invoke
curl to do an operation and it is about to write data to the terminal,
it disables the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), -o
[file] or similar.

It is not the same case for FTP upload as that operation does not spit
out any response data to the terminal.

If you prefer a progress "bar" instead of the regular meter, -# is your
friend.

Q2。 如何使curl使用相同的下载文件名?

在前面的示例中,您看到我们必须显式指定下载的文件名。 但是,如果需要,可以强制curl使用要下载的文件的名称作为本地文件名。 这可以使用-O命令行选项完成。

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

所以在这种情况下,在我的系统输出中生成了一个名为'ubuntu-18.04-desktop-amd64.iso.torrent'的文件。

Q3。 如何使用curl下载多个文件?

这也不复杂 - 只需按以下方式传递URL:

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

例如:

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso.torrent

这是上面的命令:

如何使用curl下载多个文件

因此,您可以看到输出中显示了两个URL的下载进度。

Q4。 如何解决“移动”问题?

有时,当您将URL传递给curl命令时,会出现“Moved”或“Moved Permanently”等错误。 当输入URL重定向到某个其他URL时,通常会发生这种情况。 例如,您打开一个网站说oneplus.com,它会重定向到您所在国家/地区的网址(例如oneplus.in),因此您会收到如下错误:

如何解决“移动”问题

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

curl -L http://www.oneplus.com

Q5。 如何从中断点恢复下载?

有时,下载会在两者之间中断。 当然,为了节省时间和数据,当你再试一次时。 你可能希望它从它被打断的那一刻开始。 Curl允许您使用-C命令行选项执行此操作。

例如:

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

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

如何从中断点恢复下载

结论

所以你可以看到,如果你通过命令行下载东西,curl命令是一个有用的实用程序。 我们刚刚在这里抓住了表面,因为该工具提供了更多功能。 完成本教程中讨论的命令行选项后,您可以前往curl的手册页以了解有关它的更多信息。