Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Руководство по команде curl для начинающих

Оригинал: Linux curl Command Tutorial for Beginners (5 Examples)
Автор: Himanshu Arora
Дата публикации: 26 июля 2018 года
Перевод: А. Кривошей
Дата перевода: февраль 2019 г.

Хотя основным средством, с помощью которого пользователи загружают данные из интернета, являются веб-браузеры, существуют команды Linux, которые также позволяют вам это делать. Эти утилиты пригодятся в системах, где нет графического интерфейса.

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

Команда curl

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

curl [options] [URL...]

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

curl - это инструмент для передачи данных с или на сервер, используя один из поддерживаемых протоколов (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP). Команда предназначена для работы без взаимодействия с пользователем.

curl предлагает множество полезных трюков, таких как поддержка прокси, пользовательская аутентификация, загрузка по FTP, HTTP post, SSL соединения, куки, передача файлов, возобновление загрузок, Metalink и многое другое.

curl работает на базе libcurl для всех функций, связанных с передачей данных. См. libcurl (3) для деталей.

Ниже приведены примеры в стиле вопрос/ответ, которые должны дать вам лучшее представление о том, как работает 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>
Записать вывод в <file> вместо stdout.

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

вывод команды curl

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

curl обычно отображает индикатор хода выполнения операции, указывая количество переданных данных, скорость передачи, оставшееся время и т. д.
curl по умолчанию отображает эти данные на терминал, поэтому, если вы вызываете curl для выполнения операции, и он собирается писать выходные данные в терминал, он отключает индикатор прогресса, так как в противном случае он может смешать индикатор прогресса и данные.
Если вам нужен индикатор выполнения для запросов HTTP POST или PUT, вам нужно перенаправить вывод ответа в файл, используя shell redirect (>), -o [file] или аналоги.
Это не так для загрузки по FTP, так как эта операция не выдает данные на терминал.

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 в действии

Таким образом, вы можете видеть процесс загрузки для обоих URL-адресов.

Q4. Как решить проблему с «Moved»?

Иногда, когда вы передаете URL команде curl, вы получаете сообщения об ошибках типа «Moved» или «Moved Permanently». Это обычно происходит, когда входной URL перенаправляет на какой-либо другой URL. Например, вы открываете веб-сайт, скажем oneplus.com, и он перенаправляет вас на URL-адрес для вашей страны (например, 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 - полезная утилита, если вы хотите загружать файлы в командной строке. Мы показали только основы, так как она предлагает намного больше возможностей. Как только вы закончите практиковать параметры командной строки, обсуждаемые в этом руководстве, вы можете перейти на страницу руководства curl, чтобы узнать больше о ней.