
Команда curl – это мощный и универсальный инструмент, используемый для передачи данных на сервер или с сервера по различным протоколам, таким как HTTP, HTTPS, FTP и др. Она расшифровывается как “Client URL” и обычно используется для веб-запросов, позволяя пользователям скачивать файлы, отправлять данные через POST-запросы и даже взаимодействовать с RESTful API непосредственно из командной строки. Адрес curl Команда 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.
Ниже приведено несколько примеров в стиле Q&A, которые должны дать вам лучшее представление о том, как работает curl.
Q1. Как работает команда 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’ на моей системе, в командной строке был получен следующий вывод:
Вот что говорится на странице 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.
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
Вот приведенная выше команда в действии:
В результате вы можете видеть прогресс загрузки для обоих URL.
Q4. Как решить проблему с “перемещением”?
Иногда, когда вы передаете URL команде curl, вы получаете ошибки типа “Перемещено” или “Перемещено постоянно”. Обычно это происходит, когда входной 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 страницу руководства учиться больше об этом.