Команда 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.