ryg

Команда curl. Обмен данными с сервером.

Синтаксис:

curl [options] [URL...]

Описание:

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

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

Написание адресов URL:

 
Синтаксис написания адреса URL зависит от используемого протокола. Подробное описание находится в RFC 3986.
 
Можно перечислить несколько адресов или части url адреса, написав их в фигурных скобках, например:
	http://site.{one,two,three}.ru
С помощью квадратных скобок можно задавать последовательности как алфавитные, так и цифровые, например:
	ftp://ftp.osxh.ru/file[1-100].txt
	ftp://ftp.osxh.ru/file[001-100].txt    (с лидирующими нулями)
	ftp://ftp.osxh.ru/file[a-z].txt
 
Шаг в диапазоне задается двоеточием, например:
	ftp://ftp.osxh.ru/file[001-100:5].txt    (с лидирующими нулями)
ftp://ftp.osxh.ru/file[a-z:2].txt
 
Не поддерживаются вложенные последовательности друг в друга, однако можно использовать несколько последовательностей рядом, например:
	http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
Отключает парсинг адресов параметр -g, --globoff.
В командной строке  curl может быть указано любое количество URL адресов, они будут обработаны последовательно.
Если не указать протокол в начале адреса, то утилита curl будет пытаться угадать необходимый протокол. Первым будет проверен http протокол, но будут проверены и другие часто используемые протоколы. Также будет сделана проверка по имени домена, например если в начале адреса есть ftp, то будет проверен ftp протокол.
Для улучшения скорости передачи curl пытается повторно использовать соединения с сервером, это улучшает скорость при одновременной передаче нескольких файлов. Но это делается только для файлов, указанных в одной командной строке и не работает между несколькими копиями curl.
 

Индикатор выполнения.

Обычно curl отображает процесс выполнения во время операций с указанием количества передаваемых данных, скорости передачи данных и оценки оставшегося времени на выполнение.
Отображение этих данных происходит в терминале по умолчанию, поэтому если вы скачиваете данные в терминал данный параметр необходимо отключить, чтобы не повредить данные.
В случае использования протокола HTTP и POST и PUT запросов индикатор выполнения  можно перенаправить в файл, используя стандартный редирект '>' или -o file.
Данные передаваемые по протоколу ftp не могут быть выведены на терминал, и переадресация индикатора выполнения не требуется. 
 
Вместо стандартного индикатора выполнения можно использовать прогрес-бар с помощью параметра -#.
 

Параметры команды curl

 
В общем, в булевы параметры включены и для их отключения используется написание с приставкой 'no'. Данная возможность используется, начиная с версии 7.19.0.
 
 
Кратко Длинный ключ Описание параметра
-# --progress-bar Использовать более простой прогресс бар вместо стандартного отображения выполнения.
-0  --http1.0 Использовать протокол HTTP 1.0 вместо стандартно используемого HTTP 1.1
-1 --tlsv1 (SSL) Принудительно использовать TLS версии 1 во время обмена с удаленным сервером TLS
-2 --sslv2 (SSL) Принудительно использовать SSL версии 2 во время обмена с удаленным сервером SSL.
-3 --sslv2 (SSL) Принудительно использовать SSL версии 3 во время обмена с удаленным сервером SSL.
-4 --ipv4 Использовать адресацию только в стандарте IPv4.
-6 --ipv6 Использовать адресацию только в стандарте IPv6.
-a --append (FTP / SFTP) Используется при загрузке, говорит curl не перезаписывать целевой файл, а добавить данные в конец файла. Если файл отсутствует, он будет создан. Внимание: этот параметр может быть проигнорирован некоторыми SSH серверы (включая OpenSSH).
-A --user-agent <agent string>
(HTTP) Задает строку с названием агента для отправки на HTTP сервер. Некоторые CGI могут работать с ошибкой, если значение данного поля не установить в "Mozilla/4.0". Для кодирования пробелов в строке в начале и конце строки необходимо установить одинарные кавычки. Данное значение может быть установлено параметром -H, --header.
Если данный параметр в командной строке встречается несколько раз, то рабочим будет последний. 
  --anyauth
(HTTP) Выяснить наиболее безопасный способ аутентификации, который поддерживает сайт. Это можно сделать, проверяя заголовки первых ответов на запросы. Данный параметр используется, чтобы избежать явного указания на метод аутентификации, который может быть --basic, --digest, --ntlm, и --negotiate.
Не рекомендуется использовать  --anyauth в случае загрузки данных из стандартного ввода, так как данная операция может потребовать повторной отправки данных сначала, а сделать это из стандартного ввода нельзя.
-b --cookie <name=data>
(HTTP) Передавать данные на HTTP сервер как куки (cookie), как будто это данные ранее полученные от сервера в строке "Set-Cookie:". Данные должны быть в формате "NAME1=VALUE1; NAME2=VALUE2".
Если в строке не используются символы '=', то она рассматривается в качестве имени файла, где хранится строка из coockie, и которая в случае совпадения должна быть использована. При использовании данного метода также активируется "cookie parser", который сделает запись входящих cookie. Это может быть удобно в сочетании с параметром  -L,  --location. Формат файлов с куками должен быть либо в формате  Netscape/Mozilla, либо хранить простые заголовки HTTP.
 
Замечание: файл, определенный параметром -b, --cookie используется только для чтения, для записи куков используйте параметр -c, --cookie-jar, а для записи HTTP заголовков используется -D, --dump-header!
Если данный параметр описан несколько раз, то использоваться будет последний.
-B --use-ascii
Включить ASCII передачу с использованием FTP или LDAP, это может быть задано и с помощью url заканчивающегося ";type=A".
Этот параметр отправляет данные на стандартный вывод, для работы в текстовом режиме для систем Win32.
  --basic Говорит curl, что необходимо использовать стандартную проверку подлинности HTTP. Данный параметр используется по умолчанию, и указывать его явным образом имеет смысл только в случае отмены других методов проверки (--ntlm, --digest, или --negotiate).
-c  --cookie-jar <filename>
Задать файл, в который будут записаны все куки после завершения команды. Туда будут записаны все прочитанные куки из файла и полученные от удаленного сервера. Если куки не будут получены и не считывались параметров --cookie <name=data>, то файл не будет записан. Формат записываемого файла Netscape. Если вместо имени файла задать тире '-', то куки будут выводиться в стандартный вывод.
В случае если куки невозможно создать или записать curl не сообщит об этом явным образом. Необходимо использовать параметр -v, который выведет предупреждение, но это будет единственная информация о проблеме.
--continue-at <offset>

Продолжить работу предыдущей сессии передачи файлов с заданным смещением. При использовании FTP сервера команда SIZE не будет использована curl.
Можно использовать  "-C -", чтобы curl автоматически нашал место где возобновить передачу. 
Если данный параметр описан несколько раз, то использоваться будет последний.

  --ciphers <list of ciphers>
(SSL) Определяет шифры, которые будут использованы в соединении, должны быть указаны действующие шифры. Подробнее о SSL шифрах написано по адресу:  http://www.openssl.org/docs/apps/ciphers.html
NSS шифры отличаются от OpenSSL и GnuTLS. Подробный список шифров NSS есть в записи  NSSCipherSuite по адресу:
http://directory.fedora.red-hat.com/docs/mod_nss.html#Directives
Если данный параметр описан несколько раз, то использоваться будет последний.
  --compressed (HTTP) Запросить сжатый ответ используя один из поддерживаемых алгоритмов Libcurl и сохранить документ в несжатом виде. Если при использовании данного параметра сервер сообщает, что не поддерживает кодирование, то curl сообщает об ошибке.
  --connect-timeout <seconds> Задает максимальное время в секундах на установление соединения с сервером. Ограничивается только фаза установки соединения и после соединения данные параметр не используется. Также стоит посмотреть параметр -m, --max-time. Если данный параметр описан несколько раз, то использоваться будет последний.
  --create-dirs В сочетании с параметром -o curl будет создавать локальные каталоги (если это необходимо).
Для создания каталогов на удаленном сервере используется параметр для FTP или SFTP --ftp-create-dirs.
  --crlf (FTP) Конвертировать при загрузке LF в CRLF. Как правило используется для MVS (OS/390)
  --crlfile <file>  (HTTPS/FTPS) Указывает на файл использующий формат PEM для сертификатов (Certificate Revocation).
Если данный параметр описан несколько раз, то использоваться будет последний.
Параметр добавлен в версию 7.19.7
 -d --data <data>
(HTTP) Отправляет указанный в data POST запрос не сервер HTTP аналогично тому, как пользователь, заполнив HTML форму, нажал кнопку "отправить". Curl  передаст данные на сервер с помощью content-type application/x-www-form-urlen-coded.
Параметр --data <data> аналогичен --data-ascii, для отправки двоичных данных необходимо использовать параметр --data-binary. Для url перекодировки значений полей формы можно использовать --data-urlencode.
В случае если данный параметр будут встречен в командной строке несколько раз, то данные будут объединены, используя разделительный символ '&'. Например, строка  '-d  name=daniel  -d skill=lousy' будет передана в следующем виде 'name=daniel&skill=lousy'.
Если значение параметра начинается с "@" то после него должно быть имя файла с данными или дефис '-' в случае если вы хотите, чтобы curl использовал данные из стандартного ввода. Можно указать несколько файлов, но их содержимое должно быть подготовлено правильным образом.
-D --dump-header <file>
Данный параметр заставляет curl записывать заголовки в указанный файл. Это достаточно удобно, если вам необходимо сохранять заголовки, которые вам посылает http сайт.
При использовании FTP, строки ответов FTP сервера считаются заголовками и также сохраняются в файл.
 Если данный параметр описан несколько раз, то использоваться будет последний.
  --data-binary <data>
(HTTP) Отправляет сообщение без какой-либо обработки.
Если значение data начинается с @ то за ним должно следовать имя файла. Данные отправляются аналогично  --data-ascii за исключением того, что символы новой строки сохраняются и не делается никаких преобразований.
Если этот параметр использован несколько раз в одной команде, то данные будут добавляться как это описано в -d, --data.
  --data-urlencode <data>
Данный параметр похож на параметр --data, но выполняет кодирование url (добавлен в версии 7.18.0)
Для совместимости с CGI <data> должна начинаться с имени следующим за разделителем и содержания и может быть описана с помощью одного из следующих выражений:
 
content
Curl перекодирует содержимое и передаст его, но в данном случае в данных не должно быть символов = или @.
=content
Перекодировать и передать данные, символ = не будет включен в данные.
name=content
Позволит перекодировать и передать данные, name уже должно быть перекодировано
@filename
Загрузить данные из файла filename, перекодировать их и передать методом POST
name@filename
Загрузить данные из файла filename, перекодировать их и передать методом POST. name должно быть уже перекодировано и после него будет поставлен знак равенства.
 
  --delegation LEVEL Установвить уровень делегирования учетных данных пользователя.  Используется с GSS / Kerberos.
  --digest
(HTTP) Позволяет curl произвести HTTP авторизацию. Предотвращает передачу пароля в открытом виде, рекомендуется использовать с параметрами -u, --user для установки имени пользователя и его пароля. Также можно использовать связанные параметры --ntlm, --negotiate и --anyauth.
Если данный параметр использован несколько раз, то имеет значение только первое упоминание.
  --disable-eprt
Отключить использование EPRT и LPRT при выполнении передачи по FTP протоколу. Без данного параметра curl сначала попробует использовать EPRT, затем LPRT и только после этого PORT, а с этой опцией всегда будет использована только PORT. EPRT и LPRT являются расширением оригинального протокола FTP и не все серверы могут их поддерживать.
--eprt может быть использована для включения EPRT, а для отключения --no-eprt или --disable-eprt.
 
  --disable-epsv Сообщить curl, что нельзя использовать команду EPSV во время пассивной передачи по FTP.
-e  --referer <URL> (HTTP) Отправляет информацию "Referer Page" на HTTP сервер. Это можно сделать и параметром  -H, --header flag. При использовании -L, --location можно добавить ";auto" в  --referer  URL.  Если данный параметр описан несколько раз, то использоваться будет последний.
-E --cert <certificate[:password]>
(SSL) Сообщает curl использовать указанный файл сертификата клиента при получении файла по HTTPS, FTPS или другому SSL-протоколу. Сертификат должен быть в формате PEM. Если не указывать пароль (password), то он будут запрошен в окне терминала.
Замечание: данный параметр объединяет файл "сертификата", который является личным ключом (private key) и личный сертификат. Используя параметры --cert и --key их можно определить независимыми.
Если curl построен с обменом библиотеки NSS SSL, то этот параметр может сказать curl, использовать его название вместе с библиотекой NSS заданной в переменной SSL_DIR (или по умолчанию /etc/pki/nssdb). Если модуль NSS PEM PKCS#11 (libnsspem.so) доступен, то файлы PEM могут быть загружены.
Если вы хотите использовать файл в текущей папке, поставьте в начале имени префикс "./"
Если данный параметр описан несколько раз, то использоваться будет последний.
  --engine <name> Выберите механизм шифрования OpenSSL для работы. Можно использовать --engine list для получения списка встроенных и поддерживаемых механизмов. 
Замечание: Не все мехонизмы могут быть доступны во время выполнения.
   --environment (Только для RISC OS) Устанавливает диапазон переменных окружения используя параметр -w, для облегчения получения информации после запуска curl.
  --egd-file <file> (SSL) Укажите путь к файлу с Entropy Gathering Daemon socket. Смотреть также --random-file.
  --cert-type <type> (SSL) Сообщает curl тип использемого сертификата. Поддерживаются PEM, DER и ENG. По умолчанию используется PEM.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --cacert <CA certificate>
SSL) Сообщает утилите, что необходимо использовать указанный сертификат для проверки равных, сертификаты должны быть в формате PEM.
Curl проверяет переменную среды 'CURL_CA_BUNDLE' и если она установлена, использует данный путь как к узлу сертификатов CA. Этот параметр переопределяет значение к этой переменной.
Windows версия curl будет автоматически искать CA сертификаты под именем  'curl-ca-bun-dle.crt', либо в каталоге, где находится curl.exe, либо в текущем каталоге, либо в папках, описанных в переменной PATH.
Если curl построен с обменом библиотеки NSS SSL, то этот параметр может сказать curl, использовать его название вместе с библиотекой NSS заданной в переменной SSL_DIR (или по умолчанию /etc/pki/nssdb). Если модуль NSS PEM PKCS#11 (libnsspem.so) доступен, то файлы PEM могут быть загружены.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --capath <CA certificate directory> (SSL) Сообщает curl, использовать указанный каталог сертификатов для проверки. Может задать несколько путей разделив их двоеточием ":" (например  "path1:path2:path3"),сертификаты должны быть в формате PEM. Если curl построен с обменом библиотеки OpenSSL, папка должна быть обработана с помощью утилиты c_rehash, поставляемой вместе с OpenSSL.
Если --cacert  файл содержит большое количество CA сертификатов, то более эффективным может быть использование --capath.
-f --fail
(HTTP) Молчать о сбоях. Не сообщать об ошибках на сервере. Обычно это делается для работы скриптов. В нормальной ситуации, когда HTTP сервер делает сбой в доставке документа, он возвращает HTML документ, подтверждающий это (который может и описывать причины ошибки). Данный параметр будет препятствовать выводу ошибки и возвращать статус завершения 22.
Данный метод не является полностью отказоустойчивым и существуют ситуации, когда коды сбоев могут проскочить, наиболее вероятно, когда присутствует авторизация (коды возврата 401 и 407).
-F --form <name=content>
Данный параметр позволяет curl эмулировать заполненной формы, в которой пользователь нажал кнопку "отправить". Программа вызывает метод POST, используя Content-Type multipart/form-data в соответствии с  RFC 2388, что дает возможность в том чисел и загрузить бинарные файлы.
Для принудительного использования части содержимого из файла перед именем файла используйте префикс '@'. Для загрузки поля из файла нужно использовать префикс '<'. Отличие '@' от '<' в том, что '@' делает присоединение файла (attachment), а '<' берет содержимое файла и вставляет его в поле.
Например, для того чтобы curl могла авторизироваться на сервере, необходимо отправить пароль, где password имя поля формы которое будет введено из  /etc/passwd:
curl -F password=@/etc/passwd www.mypasswords.com
Вместе с конструкциями '@' и '<' можно использовать дефис '-', а не имя файла, в этом случае ввод будет данных осуществлен из стандартного ввода.
Также можно использовать указание на тип содержимого  'type=', примерно так:
curl -F "web=@index.html;type=text/html" url.com
или
curl -F "name=daniel;type=text/foo" url.com
Можно также изменить поле имени загружаемого файла:
curl -F "file=@localfile;filename=nameinpost" url.com
Данный параметр можно использовать несколько раз.
  --ftp-account [data]
(FTP) Когда FTP сервер запрашивает данные авторизации, то после имени пользователя и пароля, должны быть представлены указанные данные (data). Они передаются с помощью команды ACCT. (Параметр добавлен в версию curl 7.13.0).
При использовании этого параметра дважды, второй заменяет первый. 
  --ftp-alternative-to-user Если не получается авторизация с командами USER и PASS на FTP сервере, отправьте данную команду. При соединении с  Tumbleweed's  Secure Transport сервером под FTPS используется клиентский сертификат, и команда "SITE AUTH" укажет серверу, что имя пользователя взять из этого сертификата. (Добавлено в 7.15.5).
  --ftp-create-dirs (FTP/SFTP) Если во время операции с FTP или SFTP используется путь, отсутствующий на сервере, curl завершается с ошибкой. С данным параметром curl попытается создать необходимые папки.
  --ftp-method [method]
Позволяет выбрать метод управления для доступа к файлу на FTP серверах. Значение method может быть:
    multicwd
Curl делает одну CWD операцию для каждого, полученного url в соответствии с RFC 1738, самый медленный метод, используется по умолчанию. Для глубокой иерархии будет выполнено много команд.
    nocwd  
Команды CWD вообще не используются, вместо них будут выполнены  SIZE, RETR, STOR и т.п. Это самый быстрый способ.
    singlecwd
Выполняется одна команда CWD на целевую папку, а затем curl работает аналогично multicwd. Это ближе к стандарту и более быстрый способ.
  --ftp-pasv
(FTP) Использовать пассивный режим для подключения. Пассивный режим является режимом по умолчанию, но он мог быть переопределен ранее параметром -P/-ftp-port.
Если данный параметр используется несколько раз, то последующие не имеют никакого воздействия. Пассивный режим означает, что сначала curl будет пытаться выполнить команду EPSV, а затем PASV, если не была использован параметр --disable-epsv.
  --ftp-skip-pasv-ip
(FYP) Во время соединения с сервером не использовать IP-адрес полученный от сервера на команду PASV, а повторно использовать тот же IP-адрес, что используется для контроля соединения. (Добавлено в 7.14.2)
Данный параметр не выполняется, если вместо PASV выполняются  PORT, EPRT или EPSV.
  --ftp-pret (FTP) Отправлять команду PRET перед PASV (и EPSV). Некоторые серверы, в основном drfpd, требуют эту нестандартную команду для получения списка файлов и для загрузки в режиме PASV.
  --ftp-ssl-cc Использовать CCC (Clear Command Channel), данные действия завершают работу SSL/TLS после авторизации и остальные данные не будут шифроваться. Это позволяет NAT маршрутизаторам отслеживать FTP операции. По умолчанию используется пассивный режим ftp, для других режимов смотреть  --ftp-ssl-ccc-mode. Добавлен в 7.16.1.
  --ftp-ssl-ccc-mode [active/passive] (FTP) Использовать режим CCC (Clear Command Channel). Пассивный режим не инициирует отключения от сервера, но ожидает, когда сервер это сделает и не отвечает серверу на отключение. Активный режим инициирует отключение и ждет ответа от сервера. Добавлено в 7.16.2.
  --ftp-ssl-control (FTP) Требуется SSL/TLS для FTP авторизации, но в незашифрованном виде (clear for transfer). Сбой авторизации возможен, в случае если сервер не поддерживает SSL/TLS (добавлена в 7.16.0, возможно будет удалена в последующих версиях).
  --form-string <name=string> (HTTP) Подобно --form, но значение строки для имени понимается буквально, то есть игнорирует префиксы  '@'  and  '<'  и команду  ';type='. Данный параметр нужно использовать если существует возможность используя --form случайно вызвать ненужные события '@' или '<'.
-g --globoff Отключить в curl парсинг адресов URL. В этом случае URL адреса содержащие символы {},[] не будут преобразовываться, но необходимо понимать, что такое написание не является каноническим написанием URL.
-G --get
При использовании данного параметра все данные описанные в d, --data или --data-binary будут использовать GET запрос, вместо POST. Данные будут добавлены через разделитель '?'.
Если использовать вместе с параметром -i, POST данные будут добавлены в HEAD запроса.
-H --header
 
(HTTP) Использовать дополнительные заголовки при получении веб-страницы, можно определить в curl любое количество дополнительных заголовков.
Замечание: Если добавить пользовательский заголовок, имеющий одинаковое имя с внутренним, уже имеющимся в curl заголовком, то будет использоваться пользовательский. Поэтому необходимо отдавать себе отчет в действиях, когда вы подменяете заголовки.
Удалить внутренний заголовок, заменив его собственным не меняя содержимого, можно указав его, справа от двоеточия, как в  -H  "Host:". Если вы отправляете свой заголовок без содержимого, он должен заканчиваться точкой с запятой, то есть -H "X-Custom-Header;" отправит "X-Custom-Header:".
Curl будет проверять, что каждый отправленный заголовок имеет правильный маркер конца строки. Вы не должны добавлять контент, как часть заголовка: вы не должны добавлять символы новой строки или возврата каретки, они создадут проблемы.
Как вариант можно использовать -A, --user-agent и -e, --referer.
Данный параметр может быть использован несколько раз, чтобы добавить, заменить или удалить несколько заголовков.
  --hostpubmd5 <md5> Передает строку, содержащую 32 шестнадцатеричных числа, строке должна быть 128 битной контрольной суммой MD5 удаленного публичного ключа, curl откажет в соединении с хостом, если не будет совпадать md5sums. Этот параметр используется только с протоколами SCP и SFTP. Добавлен в 7.17.1.
  --ignore-content-length (HTTP) Curl будет игнорировать заголовки Content-Length. Это особенно полезно при работе с серверами apache 1.x, которые некорректно отдают Content-Length для файлов размером больше 2 гигабайт.
-i --include (HTTP) Включить вывод HTTP заголовков, они включают в себя такую информацию как : имя сервера, дату документа, версию http и многое другое.
-I --head  (HTTP/FTP/FILE) Выбирать только HTTP заголовки. У HTTP серверов есть команда HEAD, которая используется только для получения заголовков. При использовании FTP и FILE, curl покажет только размер файла и время последнего его изменения.
  --interface <name> Выполнять операции, используя заданный интерфейс. Вы можете ввести имя интерфейса, IP адрес или имя хоста. Например:
curl --interface eth0:1 http://www.osxh.ru/
При указании параметра несколько раз, использован будет последний.
-j --junk-session-cookies (HTTP) Когда curl указано читать cookies из заданного файла, этот параметр сделает все, чтобы отбросить  "session cookies". Это будет производить эффект, аналогичный запуску новой сессии. Стандартные браузеры всегда сбрасывают сессионные куки, когда завершают сеанс.
-J --remote-header-name
(HTTP) Данный параметр говорит параметру -O, --remote-name, что необходимо использовать сервер определенный Content-Disposition filename вместо имени файла из URL адреса.
 
-k --insecure
(SSL) Этот параметр явно позволяет curl выполнить "небезопасные" (insecure) SSL соединения и передачи данных. Все SSL соединения пытаются сделать защищенными с помощью CA сертификатов установленных в узлах, это может сделать сбой при использовании -k, --insecure. 
Дополнительную информацию можно найти по адресу:
http://curl.haxx.se/docs/sslcerts.html
-K --config <config file>
Указывает на файл настроек curl. Файл конфигурации представляет собой текстовый файл, в котором могут быть записаны параметры командной строки, которые будут использованы точно так, как если бы они были написаны непосредственно в командной строке. Параметры и их значения должны быть записаны в одной строке разделенные пробелом, двоеточием, знаком равенства (предпочтительным является знак равенства). Если параметр содержит пробелы, то он должен быть заключен в кавычки. Внутри двойных кавычек возможны следующие escape-комбинации \\, \",  \t, \n, \r и \v, обратный слэш, предшествующий любым другим символам, игнорируется.
Если первым символом в строке идет символ #, то эта строка рассматривается как комментарий.  В файле записывается каждый параметр в новой строке.
 
Если вместо имени файла config file указать дефис, curl будет считывать файл конфигурации из стандартного ввода.
 
Замечание: Чтобы указать  URL адрес в конфигурационном файле, необходимо указать параметр -url option, а не просто написать адрес в новой строке, например:
 url = "http://curl.haxx.se/docs/"
Имена длинных параметров в файле настроек могут писаться без начальный двойных дефисов.
Когда вызывается curl, он всегда проверяет наличие файла настроек по умолчанию и использует его (за исключением запуска с параметром -q). Файл конфигурации ищется в следующих местах:
  1.  Ищется "домашняя папка", проверяются переменные окружения CURL_HOME и HOME. Если это не удается, то в UNIX-подобных системах вызывается функция getpwuid(), которая возвращает домашнюю папку текущего пользователя. В Windows проверяется переменная APP-DATA и напоследок  '%USERPROFILE%\Application Data'.
  2. В Windows, если нет файла _curlrc в домашней папке, будет проверено наличие файла в папке, где находится curl.exe. В UNIX-системах будет сделана попытка загрузки файла .curlrc из  домашней директории.
Пример файла конфигурации curl:
 
# --- Example file ---
# Это комментарй
url = "curl.haxx.se"
output = "curlhere.html"
user-agent = "superagent/1.0"
# and fetch another URL too
url = "curl.haxx.se/docs/manpage.html"
-O
referer = "http://nowhereatall.com/"
# --- Конец файла с примером ---
 
Этот параметр может быть использован несколько раз для использования нескольких файлов настроек.
 
  --keepalive-time <seconds>
Этот параметр устанавливает время ожидания между отправкой keepalive зондов и индивидуальных keepalive зондов. Это эффективно для операционных систем использующих сокеты TCP_KEEPIDLE and TCP_KEEPINTVL (это UNIX системы, последние версии AIX, HP-UX и другие). Этот параметр не будет работать, если использовать --no-keepalive.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --key <key>
(SSL/SSH) Задает тип файла личного ключа (private key). Позволяет задать личный ключ отдельным файлом.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --key-type <type>
(SSL) Задает тип личного ключа  (private key), поддерживаются DER,  PEM и ENG. По умолчанию используется PEM.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --krb <level>
(FTP) Включить и использовать авторизацию (проверку подлинности) Kerberos. Значение level должно быть указано одним из следующих значений: 'clear', 'safe', 'confidential' или 'private'. Если указать любой другой, будет использован 'private'.
Этот параметр требует библиотека, созданная с поддержкой kerberos4 или GSSAPI (GSS-Negotiate). Для проверки поддерживает ли ее ваша версия curl, используйте -V, --version.
Если данный параметр описан несколько раз, то использоваться будет последний.
-l --list-only
(FTP) Показывать только имена файлов при просмотре списка файлов в папке. Это удобно в скриптах для анализа содержимого папки.
Параметр использует команду  FTP NLST, но некоторые FTP сервера на данную команду отдают только имена файлов, не включая в список подкаталоги и символьные ссылки.
-L --location (HTTP/HTTPS) Если сервер сообщает, что запрашиваемая страница была перемещена на другой адрес (указывается заголовком и кодом ответе 3ХХ), данный параметр заставляет curl сделать запрос по новому адресу. Если используются параметры -i, --include или-I, --head, будут показаны заголовки всех запрошенных страниц. Если используется авторизация, данные посылаются только для начального хоста и если переадресация происходит на другой хост, то он не сможет перехватить данные авторизации. Для изменения передачи данных авторизации используется параметр --location-trusted, для задания количества переходов --max-redirs.
  --libcurl <file>
Добавление данного параметра дает команду на запись исходного кода libcurl в файл file, что эквивалентно записи ваших действий в командной строке.
Замечание: Не работает в полном объеме с параметром -F и с отправляемыми формами из нескольких частей.
В случае использования параметра несколько раз, запись будет идти в последний указанный файл.  (Добавлена в 7.16.1).
  --limit-rate <speed>
Задает максимальную скорость передачи данных. Этот параметр полезен, если у вас ограниченный канал и вы хотите его не перегружать.
Скорость канала измеряется в байтах в секунду, если не использовать суффикс. Буквы 'k' или 'K' означают килобайт в секунду, 'm' или 'M' -мегабайт в секунду и 'g' или 'G' гигабайт в секунду. Например : 100K, 3m, 1G&.
Если также использовать параметр  -Y, --speed-limit, этот параметр будет иметь приоритет, и может испортить ограничивая скорость, нарушая логику работы speed-limit.
Если данный параметр описан несколько раз, то использоваться будет последний.
  --local-port <num>[-num] Задает предпочитаемый порт или диапазон портов, которые можно использовать для соединения. (Добавлена в 7.15.2).
  --location-trusted (HTTP/HTTPS) Аналогично параметру curl -L, --location, но позволяет отправлять имя и пароль для всех хостов, на которые происходит переадресация. Это может представлять некоторую опасность утечки ваших регистрационных данных, особенно в случае использования HTTP Basic authentication.
-m --max-time <seconds>
Задает максимальное время в секундах выделенное на операцию. Это полезно при использовании медленных каналов и пакетных задания. См. также параметр --connect-timeout.
Если данный параметр указан несколько раз, то использоваться будет последний.
  --mail-from <address>
(SMTP) Указать один почтовый адрес, от имени которого должно быть отправлено письмо.
 
  --max-filesize <bytes>
Указать максимальный размер файла для скачивания. Если запрашиваемый файл больше разрешенного размера, то скачивание не начнется и код завершения curl будет 63.
Замечание: Размер файла не всегда может быть известен до начала загрузки и для таких файлов параметр не работает, даже если во время скачивания окажется, что его размер больше лимита. Это касается как скачивания как по FTP, так и HTTP.
  --mail-rcpt <address> (SMTP) Указать один почтовый адрес, на который должно быть отправлено письмо. Этот параметр может быть использован много раз для указания большого количества получателей.  (Added in 7.20.0).
  --max-redirs <num>
Установить максимальное количество переходов по переадресациям. Если используется  -L, --location этот параметр может быть использован для предотвращения ситуации с бессмысленным количеством переходов. По умолчанию ограничение установлено 50 переходов, для снятия ограничение на количество переадресаций установите этот параметр в значение -1.
Если данный параметр указан несколько раз, то использоваться будет последний.
-n --netrc
Проверяет файл .netrc (_netrc в Windows) в домашней папке пользователя для получения имени пользователя и пароля. Обычно это используется для FTP серверов на UNIX, если используется HTTP, curl включит авторизацию. Формат файла netrc описан в команде ftp. Программа не будет ничего сообщать, если у нее не будет достаточно прав для чтения данного файла (он должен быть доступен для чтения для всех или для необходимой группы). Для поиска домашней папки используется переменная окружения HOME.
 
Например, содержимое файла .netrc для FTP сервера host.domain.com с именем пользователя  'myname' и паролем  'secret' должно выглядеть так:
host.domain.com login myname password secret
 
-N --no-buffer Отключает буферизацию исходящих данных. Использование данного параметра отрицательно влияет на передачу данных, можно использовать параметр --buffer для управления буферизацией.
  --netrc-file Данный параметр аналогичен параметру --netrc, но позволяет указать относительный или абсолютный путь к файлу netrc, который будет использован curl. Можно указать только один файл в вызове.
Если данный параметр указан несколько раз, то использоваться будет последний файл.
Данный параметр отменяет действие --netrc, так как они взаимоисключающие, но будет работать параметр --netrc-optional, если он указан.
  --netrc-optional Очень похоже на --netrc, но является опциональной и не несет обязательного характера.
  --negotiate
(HTTP) Включает авторизацию  GSS-Negotiate, данный метод был разработан корпорацией Microsoft и используется в их приложениях. Данный метод предназначен,  в основном для аутентификации Kerberos5, но может быть использован и с другими методами  проверки подлинности. Дополнительную информацию можно получить в IETF draft draft-brezak-spnego-http-04.txt.
Если необходимо включить Negotiate для прокси, то нужно использовать --proxy-negotiate.
Для работы параметра в curl требуется библиотека (library) с поддержкой GSSAPI, что не очень распространено. Для проверки, поддерживает ли ваша версия GSS-Negotiate, используйте команду -V, --version. 
При использовании данного параметра необходимо предоставить ложные -u, --user, чтобы правильно активировать код авторизации. Достаточно отправить '-u :', так как имя пользователя и пароль на самом деле не используются.
  --no-keepalive
Отключает использование сообщений keepalive в TCP соединении, тогда как по умолчанию curl их использует.
Отключение не рекомендуется. Для последующего включения используется --keepalive.
 
  --no-sessionid
(SSL) Отключить использование кэширования SSL session-ID. По умолчанию передача всех данных происходит с использованием кэширования. (Добавлен в 7.16.0)
Данное отключение не рекомендуется, для повторного включения используется --sessionid.
  --noproxy <no-proxy-list> Указывает список хостов, разделенный запятыми, которые не используют прокси. Можно использовать символ '*' для отключения прокси. Каждое имя в списке соответствует домену или самому себе например, имя  local.com будет соответствовать  local.com, local.com:80 и www.local.com, но не www.notlocal.com. (Добавлено в 7.19.4).
  --ntlm
(HTTP) Включает авторизацию  NTLM, данный метод был разработан корпорацией Microsoft и используется веб-серверах IIS. Это закрытый протокол и в curl реализован методом подделки. 
Если вы хотите включить NTLM для авторизации прокси сервера, используйте --proxy-ntlm.
Этот параметр требует библиотеку с поддержкой SSL, для проверки,  используйте команду -V, --version
-o --output <file> Записывает вывод в файл (file) вместо стандартного вывода. Если в URL адресе используются перечисления или диапазоны, то можно использовать символ '#' с числом. Эта переменная будет заменена, как например:
curl http://{one,two}.site.com -o "file_#1.txt"
или использовать несколько переменных, как:
curl http://{site,host}.host[1-5].com -o "#1_#2"
Этот параметр можно использовать столько раз, сколько есть URL адресов в команде.
См. также --create-dirs для создания папок.
-O --remote-name
Запись в локальный файл с именем аналогичным имени получаемого файла (часть имени может быть отрезана). Если нет ничего другого, то имя файла получается с URL адреса. Файл будет сохранен в текущей папке, проверьте к какой папке вы находитесь до вызова curl с параметром -O, --remote-name.
Данный параметр можно использовать согласно количеству используемых url.
-p --proxytunnel При использовании curl с HTTP proxy (параметр -x, --proxy) данный параметр заставить туннелировать не HTTP протоколы. Данный метод требует, чтобы proxy-сервер позволял прямое подключение к curl к запрашиваемому порту, через туннель.
-P --ftp-port <address>
(FTP) Отменяет роль по умолчанию initiator/listener при соединении по FTP, данный параметр переключает curl в активный режим. На практике это означает, что curl сообщает серверу адрес и порт по которым он хочет подключиться, а в пассивном режиме запрашивает у сервера IP-адрес и номер порта для подключения. 
<address> может быть одним из вариантов:

interface
      То есть "eth0", чтобы указать какой IP-адрес интерфейса вы хотите использовать (только для UNIX).
 
IP address
      То есть сказать точный адрес, например "192.168.10.1".

hostname
      Например, "my.host.domain".
 
Если данный параметр указан несколько раз, то использоваться будет последний.
Отключить использование PORT можно параметром --ftp-pasv, отключить попытки использования команд EPRT вместо PORT можно параметром --disable-eprt. В действительности EPRT это PORT++.
Начиная с версии 7.19.5, справа от адреса можно добавить ":[start]-[end]", чтобы сообщить curl какой диапазон адресов можно использовать. start должен быть меньше, чем end. 
  --pass <phrase> (SSL/SSH) Указывает пароль для личного/закрытого ключа (private key).
Если данный параметр указан несколько раз, то использоваться будет последний.
  --post301 Сообщает curl следовать стандарту RFC 2616/10.3.2 и не преобразовывать  POST запросов в запросы GET, после переадресации с кодом 301. Поведение браузеров повсеместно не следует RFC, поэтому curl также по умолчанию конвертирует запросы. Однако потребовать POST после переадресации. Этот параметр имеет смысл, только вместе с параметром -L, --location.  Добавлено в 7.17.1.
  --post302 Все аналогично параметру --post301, только для метода переадресации 302.
  --proto <protocols>
Сообщает curl о необходимости использовать перечисленные протоколы для их первоначального поиска. Протоколы перечисляются через запятую, и указывается или имя протокола или all для всех. Возможно использование префикса ноли и ниже перечисленных модификаторов:
+    Разрешить использовать данный протокол в дополнение к уже разрешенным протоколам (по умолчанию, если не использован модификатор).
-     Запретить использование данного протокола, удалив его из списка разрешенных
=    Разрешить только этот протокол, игнорируя список разрешенных.
 
Например:
 использовать протоколы по умолчанию, но отключить ftp: 
--proto -ftps   
Разрешить curl использование только http и https:
--proto -all,https,+http
Аналогично, разрешает только http и https:
--proto =http,https
Неизвестные протоколы выдадут предупреждение, это позволяет скриптам отключать потенциально опасные протоколы, не проверяя,  поддерживается ли они curl, и это не приведет к возникновению ошибки при выполнении сценария. Добавлено в 7.20.2.
  --proto-redir <protocols>
Сообщает curl, какие протоколы можно использовать после переадресации. Для управления доступными протоколами смотреть --proto. Добавлено в 7.20.2.
 
  --proxy-anyauth
Сообщает curl о необходимости выбрать подходящий метод авторизации при работе с прокси. Может вызвать дополнительный обмен с сервером. Добавлено в 7.13.2.
  --proxy-basic Выбрать HTTP Basic для авторизации с прокси. Метод по умолчанию. Для HTTP авторизации используется параметр --basic. 
  --proxy-digest Выбрать HTTP Digest для авторизации с прокси. Для HTTP авторизации используется параметр --digest. 
  --proxy-negotiate Выбрать HTTP Negotiate для авторизации с прокси. Для HTTP авторизации используется параметр --negotiate. 
  --proxy-ntlm
Выбрать HTTP NTLM для авторизации с прокси. Для HTTP авторизации используется параметр --ntlm. 
  --proxy1.0 proxyhost[:port]>
Использовать HTTP 1.0 прокси. Если номер порта не задан, то предполагается, порт 1080.
Единственное отличие от параметра -x, --proxy, в том, что при попытке подключения через прокси-сервер будет использоваться протокол HTTP 1.0 вместо стандартного протокола HTTP 1.1.
  --pubkey <key>
(SSH)  Задает имя открытого ключа (public key). Позволяет использовать открытый ключ из отдельного файла.
Если данный параметр указан несколько раз, то использоваться будет последний.
-q  
Если использовать в качестве первого параметра командной строки, то файл конфигурации curl не будет использован. Смотреть описание параметра -K, --config.
 
-Q --quote <command>
 
(FTP/SFTP) Отправить случайные команды на удаленный FTP или SFTP-сервер. Команды отправляются ПЕРЕД передачей данных (если быть точным, сразу после начальной командой PWD). Чтобы команды передавались после успешной передачи, необходимо использовать префикс дефис "-".
Чтобы команды были посланы после того, как libcurl изменит рабочую папку, перед командой передачи данных используйте префикс '+' (поддерживается только FTP). Вы можете задать любое количество команд, если сервер вернет ошибку по любой из команд, операция будет прервана. Если использовать префикс '*' операция будет продолжена, несмотря на ошибку. Необходимо использовать синтаксически корректные FTP команды, как определено в RFC 959 или одну из команд из списка описанных ниже для SFTP сервера. Параметр может повторяться несколько раз.
 
SFTP является двоичным протоколом и в отличие от FTP curl преобразует команды перед их отправкой. Имена файлов могут быть в кавычках, пробелы и специальные символы описываются как в командной строке. Ниже представлены все поддерживаемые SFTP quote команды:
 
chgrp group file
         Устанавливает группу для указанного файла (file). Group задается с помощью ID группы (десятичное число).
 
chmod mode file
         Устанавливает права доступа к указанному файлу. Права (mode) задаются восьмеричным целым. 
chown user file
         Задает владельца файла (file). Пользователь задается по его ID (десятичное целое).
ln source_file target_file
         Создает символическую ссылку на target_file.
mkdir directory_name
         Создает папку с именем directory_name.
pwd 
         Возвращает абсолютный путь к текущей рабочей папке.
rename source target
         Переименовывает файл или каталог из source в target.
rm file
         Удаляет файл с именем file.
rmdir directory
         Удаляет папку с именем directory, только если она пустая.
symlink source_file target_file
Смотреть команду ln.
 
-r --range <range>
(HTTP/FTP/SFTP/FILE) Получить диапазон байт (часть документа) по  HTTP/1.1,  FTP  или SFTP сервера или локального файла. Необходимый диапазон описывается разными способами:
0-499                           первые 500 байт
500-999                        вторые 500 байт
-500                             последние 500 байт
9500-                           все данные после первых 9500 байт
0-0,-1                           первый и последний байты (*)
500-700,600-799 300      байт со смещением от начала файла 500 (*)
100-199,500-599 два      блока по сто байт (*)
 
(*) Серверу придется отвечать несколько раз.
 
Используйте только цифры при задании начала и конца диапазона, если будет указан символ, не являющейся цифрой, ответ будет непредсказуем и будет зависеть от конфигурации сервера.
Не все серверы HTTP/1.1 имеют поддержку данной возможности и на многих серверах, чтобы получить диапазон придётся получить весь документ. FTP и SFTP серверы поддерживают простой 'start-stop' синтаксис, можно опустить один из номеров, поэтому использование FTP зависит поддержки от расширенной команды SIZE.
Если данный параметр указан несколько раз, то использоваться будет последний.
 
-R --remote-time Данный параметр заставит libcurl выяснить время, точнее timestamp удаленного файла и попытаться установить его на локальном файле.
  --random-file <file> (SSL) Указать путь и имя файла, который будет рассмотрен как содержащий случайные данные, эти данные будут использованы как начальные для SSL соединения. Также смотреть параметр --egd-file.
  --raw
Отключить внутреннее HTTP декодирование содержимого или кодировок. Сохранять не преобразовывая.  Добавлено в 7.16.2.
 
  --remote-name-all Как -O, --remote-name, только для всех URL. Если используя --remote-name-all вы хотите исключить конкретный URl, можно использовать "-o -" или --no-remote-name. Добавлено в 7.19.0.
  --resolve <host:port:address>
Предоставить специальный адрес для указанного хоста и порта. Используя данный параметр, curl может сделать запросы, используя заданный адрес и предотвращая перезапись нормально разрешенных адресов. Это некоторая альтернатива  /etc/hosts в командной строке. Порт должен позволять работать с необходимым протоколом.
Параметр можно использовать несколько раз. Добавлено в 7.21.3.
  --retry <num>
Если сервер возвращает "временную ошибку" (тайм-аут, код ответа FTP-4xx или HTTP-5xx) во время передачи данных то curl попытается выполнить команду num раз, прежде чем сдаться. Задав 0 ,вы запретите делать дополнительные попытки. Когда curl собирается в первый раз повторить попытку, он ждет одну секунду, а потом для всех последующих команд он удваивает время ожидания, пока интервал между попытками не достигнет 10 минут и после этого время ожидания не увеличивается. С помощью параметра --retry-delay можно отключить экспоненциальный алгоритм интервалов, а с помощью --retry-max-time ограничить общее время на попытки.
Если данный параметр указан несколько раз, количество попыток определит последний. Добавлено в 7.12.3.
 
  --retry-delay <seconds> Устанавливает интервал между попытками передачи данных в случае возникновения "временных" ошибок на сервере (изменяет алгоритм обратного отсчета между попытками). Данный параметр доступен только в случае, если используется --retry. Установка задержки в ноль включит алгоритм по умолчанию.
Если данный параметр указан несколько раз, последнее вхождение  определяет значение. Добавлено в 7.12.3.
 
--retry-max-time <seconds>
 
Таймер сбрасывается перед первой попыткой. Количество попыток будет сделано как обычно (смотреть параметр --retry) пока таймер не достигнет заданного лимита. Если таймер не достиг заданного лимита, то запрос выполнен качественно. Для ограничения интервала для одного запроса используйте параметр -m, --max-time. Установка в ноль запрещает делать повторные попытки. Добавлено в 7.12.3.
Если данный параметр указан несколько раз, последнее вхождение  определяет значение.
-s --silent Режим тишины. Не показывает индикатор выполнения и сообщения об ошибках.
 
-S --show-error Если используется с -s, то показывает ошибку, в случае если curl завершается с ошибкой.
 
  --ssl
(FTP,  POP3,  IMAP, SMTP) Curl попытается использовать SSL/TLS соединение, если сервер не поддерживает SSL/TLS,  вернется к небезопасному соединению. Для использования различных уровней шифрования используется --ftp-ssl-control и --ssl-reqd.
Добавлено в 7.20.0.
Ранее этот параметр назывался --ftp-ssl (Добавлено в 7.11.0). Этот параметр пока сохранен, но будет удален в следующих версиях.
 
  --ssl-reqd (FTP, POP3, IMAP, SMTP) Требует SSL/TLS соединения. Разрывает соединение, если сервер не поддерживает SSL/TLS. (Добавлено в 7.20.0).
Ранее этот параметр назывался -ftp-ssl-reqd (Добавлено в 7.11.0). Этот параметр пока сохранен, но будет удален в следующих версиях.
 
--socks4 <host[:port]>
 
Использовать указанный протокол SOCKS4a для прокси-сервера. Если номер порта не задан, то будет использован 1080. Добавлено в 7.15.2.
Отменяет параметр -x, --proxy. Добавлено в 7.15.2, с версии 7.21.7 является излишним, так как можно использовать socks4a proxy с -x,  --proxy используя socks4a:// protocol prefix.
Если данный параметр указан несколько раз, то использоваться будет последний.
  --socks4a <host[:port]> Использовать указанный протокол SOCKS5, но разрешить имя хоста локально. Если номер порта не задан, то будет использован 1080. Добавлено в 7.15.2.
Отменяет параметр -x, --proxy. Добавлено в 7.15.2, с версии 7.21.7 является излишним, так как можно использовать socks4 proxy с -x, --proxy используя socks5:// protocol prefix.
Если данный параметр указан несколько раз, то использоваться будет последний.
Данный параметр (а также --socks4) не работают с IPV6, FTPS, или LDAP.
  --socks5-hostname <host[:port]>  
  --socks5 <host[:port]>  
  --socks5-gssapi-service <servicename>
Имя сервиса по умолчанию для socks сервера  rcmd/server-fqdn, данный параметр позволяет его изменить.
Примеры:
 --socks5  proxy-name  --socks5-gssapi-service  sockd      будет использовать  sockd/proxy-name 
 --socks5 proxy-name --socks5-gssapi-service  sockd/real-name  будет использовать  sockd/real-name 
Добавлено в 7.19.4.
  --socks5-gssapi-nec Включает режим защиты negotiation согласно секции 4.3/4.4 RFC 1961.
  --stderr <file>
Перенаправление стандартного вывода ошибок в указанный файл file, если вместо имени файла указать дефис, то вывод ошибок будет направлен в стандартный вывод.
Если данный параметр указан несколько раз, то использоваться будет последний.
-t --telnet-option <OPT=val>
Передать параметры протоколу telnet. Поддерживаются следующие параметры:
TTYPE=<term>  Установить тип терминала
XDISPLOC=<X display> Sets the X display location. Смотреть http://tools.ietf.org/html/rfc1096
NEW_ENV=<var,val> Задать переменные окружения.
 
-T --upload-file <file>
Передает указанный локальный файл <file> на удаленный URL. Если в адресе нет имени файла, curl добавит имя к адресу URL.
Замечание: Необходимо использовать trailing/on в последнюю папку, чтобы curl убедилась, что имя папки не является имением файла, иначе произойдет сбой выгрузки. В случае использования HTTP(S) сервера будет использована команда PUT.
При использовании дефиса '-' вместо имени файла данные будут из стандартного ввода.
Для одного URL можно задать один параметр -T, но curl поддерживает и множественную загрузку нескольких файлов на один адрес ("globbing"), например:
curl -T "{file1,file2}" http://www.uploadtothissite.com
или
curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
  --tcp-nodelay Включить параметр TCP_NODELAY, описан в документации к curl_easy_setopt(3).
Добавлено в 7.11.2.
  --tftp-blksize <value>
(TFTP)  Установить параметр TFTP  BLKSIZE (должен быть >512). Это размер блока, который curl будет пытаться использовать при передаче данных с сервера TFTP. По умолчанию равен 512 байт. 
Если данный параметр указан несколько раз, то использоваться будет последний.
 Добавлено в 7.20.0.
  --tlsauthtype <authtype>
Установить тип авторизации TLS. На данный момент поддерживается только "SRP" для TLS-SRP  (RFC 5054). Если определены --tlsuser и --tlspassword, а --tlsauthtype нет, то будет использован режим по умолчанию "SRP".
Добавлено в 7.21.4
  --tlsuser <user>
Задать имя пользователя для TLS авторизации, заданной --tlsauthtype, так же требует указания --tlspassword.
Добавлено в 7.21.4.
  --tlspassword <password>
Задать пароль для TLS авторизации, заданной --tlsauthtype, так же требует указания --tlsuser.
Добавлено в 7.21.4.
  --tr-encoding
(HTTP) Требует использования одного из алгоритмов сжатия  Transfer-Encoding и распаковки данных по их получению.
Добавлено в 7.21.6.
  --trace <file>
Обеспечивает полный дамп трассировки всех входящих и исходящих данных, включая описательную информацию для данного выходного файла. При использовании "-" в качестве имени файла вывода, происходит переадресация в stdout (стандартный вывод).
 
Переопределяет параметры -v, --verbose или --trace-ascii, если они были использованы.
Если данный параметр указан несколько раз, то использоваться будет последний.
  --trace-ascii <file>
По результатам очень похож на  --trace, но не сохраняет шестнадцатеричные части и показывает только ASCII часть дампа. Что уменьшает размер дампа и может быть удобнее для чтения.
Переопределяет параметры -v, --verbose или --trace-ascii, если они были использованы.
Если данный параметр указан несколько раз, то использоваться будет последний.
  --trace-time
Добавляет метку времени для каждой трассировки --trace или режима подробно -V.
Добавлено в 7.14.0
-u --user <user:password>
Определяет  имя пользователя и пароль для авторизации на сервере, переопределяет заданные данные в  -n, --netrc и --netrc-optional.
Если указать только имя пользователя без двоеточия, curl запросит пароль.
При использовании протокола авторизации NTLM, когда имя пользователя и пароль берутся из окружения, необходимо указать  "-u :" для инициализации авторизации.
 
Если данный параметр указан несколько раз, то использоваться будет последний.
 
-U
--proxy-user <user:password>
 
Аналогично curl -u, --user  для прокси сервера.
 
  --url <URL>
Задает url. Параметр полезен для указания адресов URL в файле конфигурации. Для контроля куда файл будет записан используйте параметры  -o, --output или -O, --remote-name.
Параметр можно использовать любое количество раз.
  -v, --verbose
Делает вывод сообщений более подробным, в основном полезна для отладки.
Строка, начинающаяся с '>' означает заголовок данных ("header data") отправленных curl. 
Строка, начинающаяся с '<' означает заголовок данных ("header data") полученных curl. 
Строка, начинающаяся со '*' означает дополнительные данные предоставляемые curl.
Если вы считаете, предоставленной информации недостаточно попробуйте использовать параметр  --trace  или  --trace-ascii.
Замечание: Если вам необходимы только заголовки, то можно использовать  -i, --include.
 
Этот параметр отменяет действие --trace  или  --trace-ascii, если они были написаны раньше него.
-w
--write-out <format>
 
Определяет, что будет выведено в стандартный вывод (stdout) после успешного завершения операции. Строка формата <format> может содержать текст, смешанный с любым количеством переменных.
Строка может быть задана как  "string", для чтения из файла как "@имяфайла" или из стандартного ввода "@-".
Перменные, присутствующие в выводимой строке curl заменит га их значения или текст. Все переменные описываются в формате %имяпеременной, для вывода символа процентов пишется %%. Новая строка  как \n, возврат каретки \r, табуляция \t.
Замечание: в win-32 символ % является специальным и все его включения должны быть удвоены.
 
Переменные curl, которые могут быть использованы:
      url_effective
 Последние URL адреса.
      http_code   
Последний числовой код ответа HTTP(S) или FTP(s).
      http_connect 
Последний цифровой код ответа, который был получен от прокси на требование CONNECT (начиная с версии 7.12.4)
      time_total
Суммарное время, потраченное на полное выполнение операции, с точностью до миллисекунд.
      time_namelookup
Время в секундах, потраченное от начала до разрешения имен.
      time_connect  
Время в секундах, потраченное от начала до установления TCP соединения с удаленным узлом или proxy.
      time_appconnect
Время в секундах, потраченное от начала до установления SSL/SSH/etc connect/handshake соединения.
      time_pretransfer
Время в секундах, затраченное от начала до начала передачи данных. Включает в себя передачу команд и согласование протоколов.
      time_redirect 
Время в секундах, затраченное на все шаги переадресации, включая проверку имен, соединения, pretransfer, и передачу данных перед конечной операцией передачи. Показывает полное время для нескольких перенаправлений.  (начиная с версии 7.12.3)
      time_starttransfer
Время в секундах, затраченное на передачу от первого байта до начала передачи данных. Включает time_pretransfer и время потраченное сервером на подсчет результата.
      size_download
Общий объем данных полученных с сервера.
       size_upload 
Общий объем данных переданных на сервер.
       size_header
Общий объем полученных заголовков.
       size_reques
Общий объем в байтах, отправленных в HTTP запросах.
       speed_download
Средняя скорость скачивания за все время скачивания. Байт в секунду.
        speed_upload 
Средняя скорость передачи на сервер за все время скачивания. Байт в секунду.
        content_type 
Тип содержимого (Content-Type) запрашиваемого документа, если он определен.
        num_connects
Количество соединений в последней передаче (начиная с версии 7.12.3).
        num_redirects 
Количество переходов по переадресациям (начиная с версии 7.12.3).
         redirect_url
Если HTTP запрос был сделан без -L эта переменная покажет адрес куда ведет переадресация  (начиная с версии 7.18.2).
         ftp_entry_path 
Начальный путь для входа на FTP сервер.
         ssl_verify_result
Результат проверки SSL сертификата, ноль означает, что проверка была успешной.
Если данный параметр указан несколько раз, то использоваться будет последний.
-x --proxy <[protocol://][user@password]proxyhost[:port]>
Использовать указанный HTTP прокси. Если номер порта не задан, то использовать порт 1080.
Этот параметр отменяет существующие переменные среды, установленные для использования прокси сервера.
Все операции используемые 
Все операции, которые выполняются над HTTP-прокси будет прозрачно преобразованы в HTTP. Это означает, что определенные протоколы и определенные операции могут быть недоступны. Например, нельзя  использовать туннель для прокси-сервера, для этого существует -p, --proxytunnel.
 
Начиная с версии 7.21.7, существует возможность указания protocol:// prefix  для использования альтернативных протоколов proxy. Используйте  socks4://, socks4a://, socks5:// или socks5h:// для определенных протоколов SOCKS. Если протокол не указан, http://  и другие будут рассматриваться как HTTP прокси.
Если данный параметр указан несколько раз, то использоваться будет последний.
-X
--request <command>
 
(HTTP) Задает тип запроса во время обмена с HTTP сервером. Указанный запрос будет использован вместо запроса по умолчанию (GET). Подробнее описано в спецификации HTTP 1.1. Дополнительные запросы могут быть PUT и DELETE или связанные с  WebDAV - PROPFIND, COPY, MOVE и другие. 
(FTP) Определяет пользовательские команды, используемые вместо LIST, когда делается список файлов по ftp.
Если данный параметр указан несколько раз, то использоваться будет последний.
 
  --xattr При сохранении файла этот параметр сообщает curl о сохранении расширенных атрибутов. В настоящее время curl для HTTP сохраняет атрибуты URL в xdg.origin.url, тип контента хранится в атрибуте mime_type. Если файловая система не поддерживает расширенных атрибутов, будет выдано предупреждение.
-y --speed-time <time>  
-Y
--speed-limit <speed>
 
 
-z --time-cond <date expression>
Запросить файл, который был изменен после заданной даты и времени или тот который был изменен раньше. Выражение даты должно быть строкой и совпадать с одним из внутренних форматов. Если оно не совпадает, то curl попытается получить время из заданного файла. 
Использования минуса в начале выражения времени означает, нужен документ до указанной даты.
Если данный параметр указан несколько раз, то использоваться будет последний.
-h --help Использовать подсказку
-M --manual Выдать руководство по curl
-V --version
Показать информацию о версии программы curl и библиотеке libcurl.
 
В первой строке отображается версии curl, libcurl и библиотек сторонних производителей связанных с исполняемым файлом.
В второй строке, начинающейся с  "Protocols:" показываются все поддерживаемые libcurl протоколы.
 
Третья строка, начинающаяся с "Features:" сообщает о дополнительных возможностях :
IPv6 - поддерживается IPv6
krb4 - поддерживается krb4 для FTP
SSL  - поддерживается HTTPS и FTPS
libz - автоматическое сжатие и распаковка при передаче по HTTP
NTLM - поддержка авторизации NTLM
GSS-Negotiate - поддержка авторизации negotiate и krb5 для FTP
Debug - curl использует libcurl собранную для отладки. Это дает большие возможности для отслеживания ошибок и памяти. Только для разработчиков curl.
AsynchDNS - возможно использование асинхронных разрешений имен.
SPNEGO - поддерживается SPNEGO Negotiate авторизация
Largefile - поддержка передачи файлов размером больше 2GB
IDN - поддержка IDN -международных имен доменов.
SSPI - поддержка SSPI. Если используется NTLM и установлено пустое имя, curl авторизируется с текущем именем пользователя и паролем.
TLS-SRP - поддерживается SRP (Secure Remote Password) авторизация для TLS
 

Сообщения об ошибках во время работы curl

На момент перевода данной статьи были известны следующие коды завершения (ошибок) curl:

Код завершения Описание ошибки
1    Протокол не поддерживается. Ваша версия curl не поддерживает необходимый протокол.
2    Сбой инициализации
3
   Неверный синтаксис при написании URL. (URL malformed. The syntax was not correct).
 
4
    Параметр или функция, который был необходим для выполнения требуемого запроса был не включен или был отключен во время сборки библиотеки. Необходимо пересобрать libcurl.
(A feature or option that was needed to perform the desired request  was  not  enabled  or  was explicitly  disabled  at  build-time.  To make curl able to do this, you probably need another build of libcurl!)
5      Невозможно распознать прокси. Указанный прокси сервер не опознан. (Couldn't resolve proxy. The given proxy host could not be resolved.)
6      Невозможно распознать сервер. Указанный сервер не опознан.
 (Couldn't resolve host. The given remote host was not resolved.)
7
     Сбой при соединении с хостом
8      Странный ответ от FTP сервера, curl не смогла разобрать ответ. (FTP weird server reply. The server sent data curl couldn't parse.)
9 Доступ по FTP закрыт. Сервер отклонил логин/пароль или у вас недостаточно прав к необходимому файлу или папке. Наиболее часто такая ошибка возникает при попытке изменить папку, которой нет на сервере.
 (FTP access denied. The server denied login or denied access  to  the  particular  resource  or directory  you  wanted  to  reach.  Most often you tried to change to a directory that doesn't exist on the server.)
10  
11 Странный ответ от FTP сервера на запрос PASS, curl не смогла разобрать ответ. (FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.)
12  
13    Странный ответ от FTP сервера на запрос PASV, curl не смогла разобрать ответ.
(FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.)
14    FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
15    FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
16  
17    FTP не может изменить способ передачи данных на "двоичный" 
(FTP couldn't set binary. Couldn't change transfer method to binary).
18    Была передана только часть файла.
 (Partial file. Only a part of the file was transferred.)
19      FTP не смог скачать/получить доступ к требуемому файлу, ошибка выполнения команды RETR или подобной.
(FTP couldn't download/access the given file, the RETR (or similar) command failed.)
20  
21     Команда --quote получила сигнал ошибки от сервера
 (FTP quote error. A quote command returned error from the server.)
22
    HTTP страница не найдена. Запрошенный URL не найден или получен код ошибки от http сервер 400 и выше. Этот может код возврата может появиться, только если не используется параметр -f, --fail.
(HTTP page not retrieved. The requested url was not found or returned another  error  with  the HTTP error code being 400 or above. This return code only appears if -f, --fail is used.)
23
    Ошибка записи. Curl не смог записать файл в локальной файловой системе. 
(Write error. Curl couldn't write data to a local filesystem or similar.)
24
    FTP не получил STOR файл. Сервер отклонил операцию STOR, используемую для загрузки по FTP.
(FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.)
25  
26
    Ошибка чтения. С этим кодом могут завершаться многие ошибки чтения.
(Read error. Various reading problems.)
27
Нет свободной памяти. Запрашиваемая программой память не выделена.
(Out of memory. A memory allocation request failed.)
 
28
Превышен лимит ожидания. 
(Operation timeout. The specified time-out period was reached according to the conditions.)
29  
30
 Ошибка FTP PORT. Не все сервера FTP поддерживают команду PORT, попробуйте использовать PASV  
(FTP  PORT  failed.  The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!)
31
    Произошла ошибка выполнения команды REST на FTP, эта команда используется для возобновления передачи данных.
(FTP couldn't use REST. The REST command failed. This command is used for  resumed  FTP  transfers.)
32  
33     Ошибка HTTP range (диапазон). Команда диапазона не работает. 
(HTTP range error. The range "command" didn't work).
34
HTTP post error. Internal post-request generation error.
35     SSL ошибка подключения. Не удалось SSL-handshaking.
(SSL connect error. The SSL handshaking failed.)
36     FTP не смог продолжать  раннее прерванную загрузку.
(FTP bad download resume. Couldn't continue an earlier aborted download.)
37
    Операция FILE не смогла прочесть файл. Ошибка открытия файла, возможно нарушение прав. 
(FILE couldn't read file. Failed to open the file. Permissions?)
38 LDAP cannot bind. LDAP bind operation failed.
39 LDAP search failed.
40  
41
     Запрашиваемая функция LDAP не найдена. 
(Function not found. A required LDAP function was not found).
42
     Прервано по обратному вызову. Приложение сказало cerl прервать операцию.   
Aborted by callback. An application told curl to abort the operation.
43
      Внутренняя ошибка, функция была вызвана с неправильными параметрами.
(Internal error. A function was called with a bad parameter.)
44  
45 Interface error. A specified outgoing interface could not be used.
46  
47     Слишком много переадресаций, достигнут счетчик разрешенных переадресаций.
 (Too many redirects. When following redirects, curl hit the maximum amount).
48 Unknown  option  specified  to  libcurl. This indicates that you passed a weird option to curl that was passed on to libcurl and rejected. Read up in the manual!
49     Искаженный параметр для telnet.
Malformed telnet option.
50  
51 The peer's SSL certificate or SSH MD5 fingerprint was not OK.
52 The server didn't reply anything, which here is considered an error.
53 SSL crypto engine not found.
54 Cannot set SSL crypto engine as default.
55 Failed sending network data.
56 Failure in receiving network data.
57  
58 Problem with the local certificate.
59 Couldn't use specified SSL cipher.
60 Peer certificate cannot be authenticated with known CA certificates.
61 Unrecognized transfer encoding.
62 Invalid LDAP URL.
63      Достигнут максимальный размер файла.
(Maximum file size exceeded).
64 Requested FTP SSL level failed.
65
Sending the data requires a rewind that failed.
66 Failed to initialise SSL Engine.
67 The user name, password, or similar was not accepted and curl failed to log in.
68      Не найден файл на TFTP сервере.
(File not found on TFTP server).
69      Проблемы с правами доступа на TFT сервере.
(Permission problem on TFTP server).
70
     Недостаточно места на диске TFTP сервера
(Out of disk space on TFTP server.)
 
71
Неверная операция TFTP 
(Illegal TFTP operation).
72 Unknown TFTP transfer ID.
73
    Файл уже существует. 
(File already exists (TFTP)).
74
    Нет такого пользователя 
(No such user (TFTP)).
75
   Ошибка конвертации символов.
(Character conversion failed).
76 Character conversion functions required.
77
Problem with reading the SSL CA cert (path? access rights?).
78    Ресурс, на который, ссылается URL не существует.
79
An unspecified error occurred during the SSH session.
80 Failed to shut down the SSL connection.
81  
82 Could not load CRL file, missing or wrong format (added in 7.19.0).
83 Issuer check failed (added in 7.19.0).
84 The FTP PRET command failed
85 RTSP: mismatch of CSeq numbers
86 RTSP: mismatch of Session Identifiers
87 unable to parse FTP file list
88 FTP chunk callback reported error

Примеры

 

Скачать страницу в стандартный вывод
	curl http://mympa.ru/tegi/uzly-dlya-kryuchkov-i-primanok
 
Скачать страницу в файл в текущей папке с сохранением имени страницы
	curl http://mympa.ru/tegi/uzly-dlya-kryuchkov-i-primanok -O
 
Вывести на экран только HTTP заголовок
	curl http://mympa.ru/tegi/uzly-dlya-kryuchkov-i-primanok -I
 
Вывести на экран только HTTP заголовок с более подробной информацией о передаче данных
	curl http://mympa.ru/tegi/uzly-dlya-kryuchkov-i-primanok -I -v

Получить свой внешний IP

curl ipecho.net/plain; echo

Связанные команды:

Команда ftp - утилита передачи и приема файлов между компьютерами

Официальный сайт проекта url.haxx.se