Руководство по использованию команды curl в Linux для начинающих (5 примеров)

Команда curl — это мощный и универсальный инструмент, используемый для передачи данных на сервер или с сервера с помощью различных протоколов, таких как HTTP, HTTPS, FTP и других. Название аббревиатуры означает «Client URL» (URL-адрес клиента) и обычно используется для веб-запросов, позволяя пользователям загружать файлы, отправлять данные с помощью запросов POST и даже взаимодействовать с RESTful API непосредственно из командной строки. Команда curl может решать широкий спектр задач — от простой загрузки файлов до обработки сложных многочастных форм — и часто используется в скриптах для автоматизации благодаря своей гибкости и способности выводить подробную информацию, что делает его незаменимой утилитой в среде Linux.

В этом руководстве мы рассмотрим команду curl , которая, помимо прочего, позволяет загружать данные из Интернета. Обратите внимание, что примеры, рассматриваемые в этой статье, протестированы на Ubuntu 24.04.

Команда curl в Linux

Команда curl позволяет загружать и отправлять данные через командную строку Linux. Ниже приведён её синтаксис:

curl [options] [URL...]

А вот что говорится об этой команде на странице справочника man:

 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.

Ниже приведены несколько примеров в формате «вопрос-ответ», которые помогут вам лучше понять, как работает curl.

Вопрос 1. Как работает команда curl?

Основное использование довольно просто — просто передайте URL-адрес в качестве входных данных команде curl и перенаправьте вывод в файл.

Например:

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

Обратите внимание, что здесь также можно использовать опцию -o.

-o, --output 
Write output to  instead of stdout.

Возвращаясь к нашему примеру, хотя данные были загружены в файл «test.torrent» в моей системе, в командной строке был выведен следующий результат:

 

Как работает команда curl

Вот что говорится в справочной странице man об индикаторе прогресса, который отображается в выводе:

 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.

 

Вопрос 2. Как заставить 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».

Вопрос 3. Как загрузить несколько файлов с помощью 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-адресов.

Вопрос 4. Как решить проблему с сообщением «moved»?

Иногда, когда вы передаёте URL-адрес в команду curl, появляются ошибки типа «Moved» или «Moved Permanently». Обычно это происходит, когда введенный URL-адрес перенаправляет на какой-то другой URL-адрес. Например, вы открываете веб-сайт, скажем, oneplus.com, и он перенаправляет вас на URL-адрес для вашей страны (например, oneplus.in), в результате чего вы получаете ошибку, подобную следующей:

 

Как решить проблему с ошибкой «moved»

 

Если вы хотите, чтобы curl следовал за перенаправлением, используйте вместо этого опцию командной строки -L.

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

Вопрос 5. Как возобновить загрузку с момента прерывания?

Иногда загрузка прерывается на полпути. Поэтому, чтобы сэкономить время и трафик, при повторной попытке вы, возможно, захотите, чтобы она началась с того места, где произошло прерывание. Curl позволяет сделать это с помощью опции командной строки -C.

Например:

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

На следующем снимке экрана показано, как команда curl возобновляет загрузку после ее прерывания.

 

Как возобновить загрузку с момента прерывания

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *