Команда curl

Команда curl чаще всего используется в Linux для загрузки силами одноименной утилиты различных файлов из сети Интернет. Эта утилита позволяет не только загружать, но и отправлять файлы на серверы, поддерживает огромное количество протоколов, в том числе, HTTP(S) и FTP(S), но, в отличие от популярной утилиты wget, не позволяет загружать данные в рекурсивном режиме.

Базовый синтаксис команды выглядит следующим образом:

$ curl [параметры] URL…

Утилита поддерживает огромное количество параметров, но на практике используется лишь малая часть из них. По умолчанию утилита выводит данные загружаемого из сети файла посредством стандартного потока вывода. По этой причине в подавляющем большинстве случаев используется либо перенаправление потока вывода, либо параметр -o, позволяющий указать результирующий файл. Параметр -O позволяет записывать данные в файл с именем из URL. Для корректной обработки перенаправлений URL может использоваться параметр -L. Для продолжения загрузки файла может использоваться параметр -C -. Если же нужно ограничить скорость загрузки, может использоваться параметр --limit-rate. Еще одним полезным параметром является параметр -#, превращающий текстовые отчеты о процессе загрузки в псевдографический индикатор прогресса.

Примеры использования

Загрузка файла

Для загрузки файла из Интернет нужно использовать один из способов указания имени результирующего файла.

Это пример перенаправления потока вывода:

$ curl -# http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso > alpine-standard-3.8.0-x86.iso

Это пример указания имени результирующего файла:

$ curl -# http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso -o alpine-standard-3.8.0-x86.iso

А это — пример сохранения загруженных данных в файле с именем из URL:

$ curl -# -O http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso

Три приведенные выше команды аналогичны — в результате их исполнения загруженные данные будут сохранены в файле с именем alpine-standard-3.8.0-x86.iso.

Продолжение загрузки файла

Для того, чтобы продолжить загрузку файла с того места, на котором была прервана предыдущая операция загрузки, достаточно использовать параметр -C -:

$ curl -# -C - -O http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso

Дефис после параметра -C позволяет автоматически определить размер загруженной части файла. Вместо него может быть указан байтовый сдвиг, после которого следует начать загрузку.

Загрузка файла с ограничением скорости

Для ограничения скорости загрузки файла достаточно использовать параметр --limit-rate и указать максимальную скорость загрузки:

$ curl -# --limit-rate 1024B -O http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso

В результате файл будет загружаться с максимальной скоростью в 1024 байта в секунду.

Загрузка нескольких файлов

Для загрузки нескольких файлов следует указать несколько строк URL:

$ curl -# -O http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86/alpine-standard-3.8.0-x86.iso -O http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-standard-3.8.0-x86_64.iso

В результате будут загружены файлы, доступные по обоим URL.

Просмотр текстового документа в терминале

Для того, чтобы просмотреть текстовый документ с уделенного ресурса в терминале, достаточно воспользоваться утилитой curl совместно с утилитой more.

$ curl -# https://download.gnome.org/WELCOME.msg | more
######################################################################### 100,0%
GNOME Mirroring Services

MirrorBrain istance: https://download.gnome.org
Maintainers: GNOME Sysadmin Team

Willing to mirror GNOME's code? Please have a look at https://wiki.gnome.org/Sys
admin/Mirrors.